私は以下を持っています(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 の場合に menu_items をプルし続ける
これを行う方法についてのアイデアはありますか?
どうも
編集#1 は、act_as_treeと場所の関連付けも機能する必要があるため、これらを追加しました。
join on :has_many :through アソシエーションを使用したこのスコープのようなものは機能するかもしれませんが、少し醜いようです