2010-04-27 91 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

相關問題