关联方法的模型范围

时间:2016-02-10 09:28:57

标签: ruby-on-rails ruby ruby-on-rails-4

我试图仅为未来事件创建一个范围,事件的日期基于活动日期,我在我的事件模型中有一个名为end_at的方法,但在尝试创建时我控制器的范围我正在

PG::UndefinedColumn: ERROR:  column "end_at" does not exist

活动模型

has_many :activities, dependent: :destroy

scope :future_events, -> { where('end_at >= ?', Date.today) }

def end_at
  activities.chronological.last.end_at
end

1 个答案:

答案 0 :(得分:2)

无法通过方法查询。你可以这样做:

scope :future_events, lambda {
  joins(activities: :chronological)
    .where('chronologicals.end_at >= ?', Date.today)
}

说明

  • joins中列出了关联名称;
  • where中,您将表的真实名称放在数据库中它们的名称(它们有时恰好与模型的关联名称不同)。

此范围基本上表示您希望返回未来事件,其活动的时间顺序end_at属性为>= Date.today