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,但是瞧,我对此期望感到失望。谁能看到我在这里可能错过的地方?我已经在Google上进行了很多搜索,从中我可以看到它应该起作用。     

解决方法

我相信您还需要在用户模型的has_many关联声明中指定:foreign_key选项。
class User
  has_many :subject_families,:foreign_key => \'assigned_to\'
    ,您还需要在
User
has_many
关系中指定
:foreign_key => \'assigned_to\'
。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...