Синтаксис Rails 3 с attr_accessible и созданием связанных объектов - PullRequest
0 голосов
/ 11 октября 2011

Учитывая следующую модель:

rails g model Menu name:string
rails g model MenuHeader mh_name:string menu_id:integer

class Menu < ActiveRecord::Base
    has_many :menu_headers
    attr_accessible :menu_headers_attributes, :name
end

class MenuHeader < ActiveRecord::Base
    belongs_to :menu
end

Пытаясь добавить через консоль rails, получаю:

Menu.create({"name"=>"My first menu",:menu_headers_attributes=>{:mh_name => "here is my name"}})
ActiveRecord::UnknownAttributeError: unknown attribute: menu_headers_attributes

Какой будет правильный синтаксис для добавления этого?

Могу ли я удалить attr_accessible?

thx

изменить # 1 из ответа кирпича (спасибо, очень признателен!)

class Menu < ActiveRecord::Base
  has_many :menu_headers
  attr_accessible :name
  accepts_nested_attributes_for :menu_headers
end  

 ruby-1.9.2-p290 :001 > Menu.create({"name"=>"My first menu",:menu_headers_attributes=>{"mh_name" => "here is my name"}})
 TypeError: can't convert Symbol into Integer
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/nested_attributes.rb:395:in `[]'
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/nested_attributes.rb:395:in `block in assign_nested_attributes_for_collection_association'
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/nested_attributes.rb:395:in `map'
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/nested_attributes.rb:395:in `assign_nested_attributes_for_collection_association'
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/nested_attributes.rb:287:in `menu_headers_attributes='
from /Users/jt/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0/lib/active_record/base.rb:1745:in `block in assign_attributes'

1 Ответ

1 голос
/ 11 октября 2011

Вам необходимо добавить:

accepts_nested_attributes_for :menu_headers

в вашу модель менюЭто добавит menu_headers_attributes в качестве атрибута к Menu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...