Rails“where”方法通过子属性查找父项

时间:2015-10-05 01:42:53

标签: ruby-on-rails activerecord

我有一个Rails应用程序,我正在尝试根据子类的日期创建父类列表。

现在我有:

orders = Order.where("order_reminders.date < ?", 1.month.from_now)

但是我收到了一个错误。

“没有这样的栏目:order_reminders.date”

我确定我的问题出在我的查询中,但我不确定如何修复它。

2 个答案:

答案 0 :(得分:8)

您需要使用referencesjoinsincludeseager_load等方法,具体取决于您的需求。确定选择内容的最简单方法是转到documentation/api并阅读它们。

至于答案,如果在order_reminders中将Order定义为关联,则只需使用默认使用joins的{​​{1}},这意味着它赢了“{1}}。在没有INNER JOIN的情况下返回orders,这很可能是您在搜索某些内容时所需的内容。

order_reminders

答案 1 :(得分:1)

您的应用中的order_reminders是另一个表吗?

如果order has_many order_reminders,请尝试此查询

Order.joins(:order_reminders).where("order_reminders.date < ?", 1.month.from_now)