我有一个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
答案 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
。