Rails 3.1 Active Record - загрузка родительского объекта в отношении has_many: through - PullRequest
1 голос
/ 28 сентября 2011

У меня есть следующая структура класса для приложения, которое я портирую с php на rails:

class Menu < ActiveRecord::Base
  has_many :menu_headers
  has_many :menu_items, :through => :menu_headers
end

class MenuHeader < ActiveRecord::Base
  acts_as_tree :parent_id
  has_many :menu_items
  belongs_to :menu
end

class MenuItem < ActiveRecord::Base
  belongs_to :menu_headers
end

Как мне загрузить MenuHeader или Menu для определенного MenuItem?

Like:

ruby-1.9.2-p290 :004 > @b=Menu.find(1)  #works
ruby-1.9.2-p290 :005 > @b.menu_headers  #works
ruby-1.9.2-p290 :006 > @b.menu_items    #works

ruby-1.9.2-p290 :004 > @mi=MenuItem.find(1) #works
ruby-1.9.2-p290 :005 > @mi.menu_headers     #doesn't work
ruby-1.9.2-p290 :006 > @mi.menus            #doesn't work

thx

1 Ответ

2 голосов
/ 28 сентября 2011

Вам необходимо единственное число ассоциаций следующим образом:

class MenuItem < ActiveRecord::Base
  belongs_to :menu_header
  has_one :menu, :through => :menu_header
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...