我正在尝试仅为将来的事件创建一个范围,事件的日期基于活动日期,我的事件模型中有一个名为 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
无法按方法查询。你可以做这样的事情:
scope :future_events, lambda {
joins(activities: :chronological)
.where('chronologicals.end_at >= ?', Date.today)
}
描述:
- 在
joins
中,您输入了协会的名称; - 在
where
中,您将表的真实名称放在数据库中的命名方式(它们有时恰好与模型的关联名称不同)。
此范围基本上是说您要返回未来事件,其中其活动的时间顺序end_at
属性为 >= Date.today
。