2011-05-24 118 views
1

我正在使用Rails 3,並且我想要定義一對多關聯:用戶可以將許多主題家庭分配給他/她,但是一個主題家庭只能分配給一個用戶。Rails:一對多關聯

這是我定義的:

class User 
    has_many :subject_families 

class SubjectFamily 
    belongs_to :assignee, :class_name => "User", :foreign_key => 'assigned_to' 

我添加了一個遷移,這是否:

change_table(:subject_families) do |t| 
    t.integer :assigned_to 
end 

我得到一個異常時,我嘗試這樣做:

u = User.first 
s = u.subject_families 

以下是例外情況:

Invalid column name 'user_id'.: SELECT [subject_families].* FROM [subject_families] WHERE ([subject_families].user_id = 1) 

我原本以爲這是使用subject_families.assigned_to而不是user_id,但看到我對這個期望感到失望。任何人都可以看到我可能錯過了這裏嗎?我用google搜索了很多,從我看到的這個應該可以工作。

回答

5

我相信你還需要在User模型的has_many關聯聲明中指定:foreign_key選項。

class User 
    has_many :subject_families, :foreign_key => 'assigned_to' 
2

您還需要在Userhas_many關係中指定:foreign_key => 'assigned_to'