rails belongs_to同一模型两次

时间:2018-01-03 13:52:10

标签: ruby-on-rails ruby rails-activerecord

我有一个Task模型(fields = description,soldier_id:integer,created_by:integer)。

现在我自动将created_by分配给创建任务的士兵,我想将soldier_id用于必须执行任务的士兵。 这样,Task同时属于2个不同字段中的Solider如何正确完成?现在我有:

class Task < ActiveRecord::Base
  belongs_to :soldier
end 

class Soldier < ActiveRecord::Base
  has_many :tasks
end

2 个答案:

答案 0 :(得分:2)

试试这个

avl-test.c

现在,给定一个class Task < ActiveRecord::Base belongs_to :soldier belongs_to :creator, class_name: 'Soldier', foreign_key: :created_by end 对象,您可以使用task来检索您想要的士兵

答案 1 :(得分:2)

这样的事情:

class Task < ActiveRecord::Base
  belongs_to :soldier
  belongs_to :creator, class_name: Soldier, foreign_key: :created_by
end

class Soldier < ActiveRecord::Base
  has_many :tasks

  # Optional -- I'm unclear if you want this too?
  has_many :created_tasks, class_name: Task, foreign_key: :created_by
end

以上实施没问题。但是,如果您希望坚持使用rails约定(即不需要手动指定foreign_key),那么您可以调用数据库列creator_id而不是created_by