Rails - 同一个表的多个外键

时间:2015-04-05 21:04:35

标签: ruby-on-rails activerecord

我有2个模型,用户和任务

它们的关联如下:

class User < ActiveRecord::Base
    has_many :tasks, foreign_key: "assigned_to"
end

任务模型的架构如下:

    t.string   "taskable_type", limit: 255
    t.integer  "taskable_id"
    t.string   "title",         limit: 255
    t.text     "description"
    t.integer  "added_by"
    t.integer  "assigned_to"
    t.datetime "due_date"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.datetime "completed_at"
    t.datetime "deleted_at"

我还想将add_by字段与users表相关联。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以添加第二个关联,只需要为其指定一个唯一名称,例如:

class User < ActiveRecord::Base
  has_many :tasks, foreign_key: "assigned_to"
  has_many :added_tasks, foreign_key: "added_by", class_name: "Task"
end

在这种情况下,您必须添加选项class_name: "Task",因为无法从关联名称“added_tasks”推断出正确的类名(它会查找名为“AddedTask”的类)。

documentation for has_many列出了指导您完成此类操作的选项。