Rails:一对多关联



我使用的是Rails 3,我试图定义一个一对多的关联:一个用户可以有多个主题族分配给他/她,但一个主题族只能分配给一个用户。

以下是我的定义:

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,但你瞧,我对这种期望感到失望。有人能看到我可能错过了什么吗?我已经在谷歌上搜索了很多,从我所看到的,这应该有效。

我认为您还需要在用户模型的has_many关联声明中指定:foreign_key选项。

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

您还需要在User上的has_many关系中指定:foreign_key => 'assigned_to'

相关内容

  • 没有找到相关文章

最新更新