给定三个相互嵌套的模型。如果我创建顶级对象并 build_* 其他子对象,我可以通过原始实例上的 save() 之前和之后的关系检索所有子对象。但是,如果我尝试在 find(:id) 原始父对象之后检索第二级嵌套对象,它将失败。但是,我可以检索第一级嵌套对象。这通常发生在控制器中,但我将在下面的控制台输出中说明它。
我在看什么?
提前致谢!
~jpv
>> l = Lead.new :buyer_name => 'Kim Possible', :email => 'kim@possible.com', :phone => '7131231234' >> l.build_buyer >> l.buyer.name = '金买家' >> l.买家 >> l.buyer.build_contact_detail >> l.buyer.contact_detail.email = "kim-contact-detail@possible.com" >> l.save #returns true >> l.buyer #这个作品 => #<买家id:1,名称:“kim买家”,lead_id:1> >> l.buyer.contact_detail #这个工作 => #<ContactDetail id:1,company_id:nil,buyer_id:1,email:nil,address_line_1:nil,address_line_2:nil,city:nil,state:nil,postal_code:nil> >> l2 = Lead.find(1) => #<Lead id:1,company_id:nil,buyer_id:nil,public_lead_id:nil,buyer_name:“Kim Possible”,公司名称:nil,电子邮件:“kim@possible.com”,电话:“7131231234”> >> l2.buyer #按预期工作 => #<买家id:1,名称:“kim买家”,lead_id:1> >> l2.buyer.contact_detail #此中断 => 无
下面的所有样板文件:
班主任 has_one :买家 #... 结尾 类采购员 has_one :contact_detail 属于_to :lead #... 结尾 班级联系方式 属于_to :买家 #... 结尾
适当的外键位于每个“belongs_to”类中。
类 CreateBuyers < ActiveRecord::Migration def self.up create_table :买家做|t| t.string:名称 t.integer :lead_id ... 类 CreateContactDetails < ActiveRecord::Migration def self.up create_table :contact_details 做 |t| t.integer :buyer_id