关联方法的模型范围



我正在尝试仅为将来的事件创建一个范围,事件的日期基于活动日期,我的事件模型中有一个名为 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

最新更新