我试图仅为未来事件创建一个范围,事件的日期基于活动日期,我在我的事件模型中有一个名为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
答案 0 :(得分:2)
无法通过方法查询。你可以这样做:
scope :future_events, lambda {
joins(activities: :chronological)
.where('chronologicals.end_at >= ?', Date.today)
}
说明
joins
中列出了关联名称; where
中,您将表的真实名称放在数据库中它们的名称(它们有时恰好与模型的关联名称不同)。此范围基本上表示您希望返回未来事件,其活动的时间顺序end_at
属性为>= Date.today
。