2

forによって返されるハッシュのどこに表示されるPerson has_one Brainと期待する必要がありますか? もしそうなら、それを実現する方法は?brain attributes()Person

Rails コンソール出力:

1.9.3p327 :003 > Person.new.attributes
 => {"id"=>nil, "name"=>nil, "created_at"=>nil, "updated_at"=>nil} 
1.9.3p327 :004 > Brain.new.attributes
 => {"id"=>nil, "weight_kg"=>nil, "created_at"=>nil, "updated_at"=>nil, "person_id"=>nil} 

2 つのモデルは次PersonBrainとおりです。

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

end

class Brain < ActiveRecord::Base
  belongs_to :person
  attr_accessible :weight_kg
  attr_accessible :person
  attr_accessible :person_attributes
  accepts_nested_attributes_for :person
end

person_idテーブルに列があるBrainため、の属性に表示されます。テーブルにそのような列が存在する必要はありません。brainsperson_idpeople

4

2 に答える 2

0

属性間の関連付けをリストするのは良い考えではありませんが、次のような関連付け名を取得できます。

association_names = self.class.reflect_on_all_associations.map(&:name)

反射に関するドキュメントを参照してください

于 2013-02-15T16:43:24.877 に答える
0

person の sql テーブルを見ると、「brain」のフィールドがありませんが、brain テーブルには person_id があるため、brain の属性は表示されません。

連想を反映する方法についての Viktor からの良いヒントです!

于 2013-02-15T16:51:40.120 に答える