我有两个模型,foo
并且bar
,foo
有很多bars
。
Bar
是在给定时间段内发生的事件,所以我想要一个方法或范围,它返回一个ActiveRecord::Relation
表示具有当前活动条的 foos 的方法或范围。
Foo
这在具有范围的类中很容易:
class Foo < ActiveRecord::Base
has_many :bars
scope :has_current_bars, joins(:bars).where('bar.foo_id IS NOT NULL').where('bar.starts_at <= ?', DateTime.now).where('bar.ends_at >= ?', DateTime.now)
我不喜欢的是,它foo
需要非常了解bar
.
这可以重写吗,可能通过在 上添加一个范围bar
,所以foo
不需要了解bar
属性?