Rails:一对多关联

时间:2011-05-24 16:22:02

标签: ruby-on-rails ruby-on-rails-3 associations

我正在使用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但是看到我对这个期望感到失望。谁能看到我在这里错过的东西?我已经搜索了很多内容,从我可以看到的这应该工作。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

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