2

在哪里Person has_one Brain,我应该期望brain出现在for返回的哈希 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} 

这两个模型是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因为该brains表有一个person_id列。该表不需要这样的列people

4

2 回答 2

0

不确定列出属性之间的关联是一个好主意,但您可以获得如下关联名称:

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

请参阅有关反思的文档

于 2013-02-15T16:43:24.877 回答
0

它不会亲自显示大脑的属性,因为如果您查看人的 sql 表 .. 没有“大脑”字段 .. 但在大脑表中有 person_id。

维克多关于如何反思联想的好建议!

于 2013-02-15T16:51:40.120 回答