我已经扩展了我的许多 has_many 声明来过滤/加入/预加载关联。当我声明 has_many :through 关系时,我想重新使用其中的一些扩展。这可能吗?我应该采取不同的方法吗?
例子:
我的图书馆模型中有这个:
class Library < ActiveRecord::Base
has_many :meals, :dependent => :destroy do
def enabled
where(:enabled => true)
end
end
end
我的膳食模型有这个:
class Meal < ActiveRecord::Base
has_many :servings, :inverse_of => :meal, :dependent => :destroy
end
我希望我的图书馆有很多份,但仅限于启用的膳食。有几种方法可以做到这一点:
# repeat the condition in the has_many :servings declaration
class Library < ActiveRecord::Base
has_many :servings, :through => :meals, :conditions => ["meals.enabled = ?", true]
end
# declare a different meals association for only the enabled meals
class Library < ActiveRecord::Base
has_many :enabled_meals, :class_name => "Meals", :conditions => [:enabled => true]
has_many :servings, :through => :enabled_meals
end
有没有办法重新使用我现有的 :meals 声明的扩展?(在第一个代码块中启用了def)