【问题标题】:Rails: One-to-many associationRails:一对多关联
【发布时间】:2011-05-25 00:26:25
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多