我有以下(在 RoR 3.1 和 MySQL 5.1 上):
class Menu < ActiveRecord::Base
has_many :menu_headers
has_many :menu_items, :through => :menu_headers
belongs_to :location
end
class MenuHeader < ActiveRecord::Base
acts_as_tree :parent_id
has_many :menu_items
belongs_to :menu
end
class MenuItem < ActiveRecord::Base
scope :is_enabled, where(:is_enabled => true)
belongs_to :menu_header
end
我希望能够调用整个关系的范围;像这样的东西:
# call the scope :is_enabled here
Menu.find(12).(where menu_items.is_enabled)
但不知道该怎么做。
我想要以下行为:
Menu.find(12)
继续拉菜单项,其中 is_enabled=false
关于如何做到这一点的任何想法?
谢谢
编辑#1 添加了 act_as_tree 和 location 关联,因为这些也需要正常工作。
像这样的 Scope with join on :has_many :through 关联可能会起作用,但看起来有点难看