0

と の 2 つのモデルがPersonありBrainます。 Person has_one :brain、およびBrain belongs_to :personBrain/person/ 更新で属性を割り当てたい。

class Person < ActiveRecord::Base
  has_one :brain
  attr_accessible :name
  attr_accessible :brain
  accepts_nested_attributes_for :brain

end

class Brain < ActiveRecord::Base
  belongs_to :person
  attr_accessible :weight_kg

  attr_accessible :person
  accepts_nested_attributes_for :person
end

Railsコンソールで、次のように割り当てることができますPerson.brain:

 > p = Person.first
=> #<Person id: 1, name: "Dave", created_at: "2013-02-14 20:17:35", updated_at: "2013-02-14 20:17:35"> 

 > p.brain.weight_kg = 5.0
  Brain Load (0.2ms)  SELECT "brains".* FROM "brains" WHERE "brains"."person_id" = 1 LIMIT 1
 => 5.0 
 > p.save
   (0.6ms)  begin transaction
   (0.6ms)  UPDATE "brains" SET "weight_kg" = 5.0, "updated_at" = '2013-02-14 20:18:11.010544' WHERE "brains"."id" = 1
   (317.6ms)  commit transaction
=> true 

Web フォーム (およびコンソール) からは、使い古されたエラー " Can't mass-assign protected attributes: Brain_attributes " のため、できません。

I have attr_accessible :weight_kgin Brain, and in PersonI haveaccepts_nested_attributes_for :brainであるため、(間違って) これが機能することを期待しています。

私は何が欠けていますか?

4

1 に答える 1

2

attr_accessible を次のように変更します。

attr_accessible :brain_attributes
于 2013-02-14T20:45:37.507 に答える