我有一个任务模型(字段 = 描述,soldier_id:整数,created_by:整数)。
现在我自动将 created_by
分配给创建任务的士兵,我想为必须执行任务的士兵使用 soldier_id
。
这样,Task
同时属于2个不同领域的Solider
。 应该如何正确完成?现在我有:
class Task < ActiveRecord::Base
belongs_to :soldier
end
和
class Soldier < ActiveRecord::Base
has_many :tasks
end
最佳答案
像这样:
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
上面的实现就OK了。但是,如果您希望遵守 Rails 约定(即不需要手动指定 foreign_key
),那么您可以调用数据库列 creator_id
而不是 created_by
.
关于ruby-on-rails - rails belongs_to 同一个模型两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48078773/