0

背景

我有 4 个模型(用户、foo、bar、baz),它们的关联如下:

  • 鉴于user模型has_many :foos
  • 并且foo模型has_many :bars
  • 并且bar模型has_many :bazs

我想做的事

我在几个页面上有一个侧边栏,我想填充user's baz当前日期。我有一个肮脏的方法来做到这一点:遍历所有相关模型,直到我到达baz.

我正在考虑为它创建一个范围,但是当我想要的数据来自其他模型时,我不完全确定如何做到这一点,而这些模型相距 3 个关联。

*附带说明:我的目的是获取user's baz当前日期的,但不能保证baz任何一天都会有

谢谢阅读!

4

1 回答 1

2

为什么不将其定义为用户模型中的范围?

scope :baz_for_date, -> (date) {
  foos.bars.bazs.
  where("bazs.created_at >= ? AND bazs.created_at < ?", date, date+1.day)
}

编辑

刚刚意识到您只需要当天使用它,在这种情况下使用以下内容:

scope :baz_for_today, -> {
  foos.bars.bazs.where("bazs.created_at >= ?", Date.today.beginning_of_day)
}
于 2013-10-20T09:22:40.073 回答