2010-04-27 93 views
0

我有两个对象之间的父子关系。为什么我的新ID始终为“1”

Parent :has_many :children 
Child :belongs_to :parent 

当创建一个新的父母,在同一个控制器中,我创建了孩子。

@mom = Parent.new 
@child = Child.new 
@mom.children << @child 

这一切似乎去还好,但这位家长多了一个属性 - 这家长有一个最喜欢的孩子

@mom.favorite_child = @child 

好像这应该工作,除了让我们说,这是第61届的孩子在数据库中,所以它的ID是61(我知道这是发生的,因为当我检查数据库时,子记录的ID为61)。出于某种原因,当我将@child分配给父母的“favorite_child”属性时,“favorite_child”被设置为“1” - 当我需要将其设置为“61”时。

线索?

回答

2

好像父母需要像

class Parent 
    has_many :children 
    has_one :favorite_child, :foreign_key=>'favorite_child_id', :class_name => 'Child' 

否则,它不知道这是一个外键关系,和你想的对象分配给一个整数。

+0

哦,等等,我有我的关系倒退 - 我有'favorite_child_id'字段作为父类的属性 - 但它应该是另一种方式,因为外键属于类与'belongs_to ' 宣言。 – jefflunt 2010-04-27 02:54:38

+0

我在代码中添加了一个外键说明符。我不认为你有后退 – 2010-04-27 03:24:58

+0

孩子确实被添加到儿童列表中,但'favorite_child_id'字段现在保持空白。 我几乎认为在Child类中我需要类似于“belongs_to:parent_that_favors_me,:class_name =>'Parent'以及 我会一直插手,或者完全没有尝试这种思路。 – jefflunt 2010-04-27 04:15:43

相关问题