У меня есть две модели, foo
и bar
, foo
имеет много bars
.ActiveRecord область хранения инкапсулированная
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
атрибутах?
На самом деле, я думаю, вы могли бы перепутать их. – DanneManne
@ DanneManne Вы правы, я прочитал его назад. Ред. – vonconrad
Это немного отличается от того, что у меня есть. Mine возвращает foos с текущими барами. Ваш, как вы говорите, возвращает текущие бары, учитывая foo – SooDesuNe