У меня есть две модели, 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
атрибутах?