我有一个对象订单,每个订单has_many line_items(这些都是电视广告)。 LineItem将日期作为属性,即line_item运行的日期。要计算订单开始和结束日期,我使用line_items上的日期。因此,我采取最早的日期line_item和最近或最远的未来订单项,这些成为订单的开始和结束日期。您可以在下面看到计算开始日期和结束日期的方法。
def start_date
line_items.first.date rescue nil
end
def end_date
line_items.last.date rescue nil
end
现在我需要能够获得当月的所有订单。我试图使用.where查询调用查询中的start_date和end_date方法。请参阅下面的查询。
Order.where(start_date <= ? AND end_date >= ?', Date.today.beginning_of_month, Date.today.end_of_month)
我收到错误
PG::UndefinedColumn: ERROR: column "start_date" does not exist
是否可以在.where查询中调用方法?
答案 0 :(得分:0)
不,不可能在WHERE查询中调用方法。
如果没有您的数据库架构,我无法编写工作代码,但您应该使用JOIN将line_items记录包含到结果集中,然后才将条件应用于line_items字段。