在同一张表中使用多个外键

时间:2018-09-13 13:27:58

标签: ruby-on-rails foreign-keys constraints ruby-on-rails-5

我有一个名为Procedure的模型,该模型必须由一个用户拥有并分配给另一个用户。我只有一个表User,其作用是区分用户。

因此,过程有2个对表User的引用。

我找到并实施了此解决方案here 所以在我的程序模型中,

belongs_to :owner, class_name: "User", foreign_key: "owner_id"
belongs_to :assignee, class_name: "User", foreign_key: "assignee_id"

在模型用户中我有这个

has_many :owned_procedures, class_name: "Procedure", foreign_key: "owner_id"
has_many :assigned_procedures, class_name: "Procedure", foreign_key: "assignee_id"

但是我无法理解应该如何物理实现,我的意思是在表级别: 表procedures是否需要同时具有字段owner_id and assignee_id或仅具有字段user_id

1 个答案:

答案 0 :(得分:2)

  

表过程是否需要同时拥有owner_id和   Assignee_id,或者只是一个字段user_id

您应该在owner_id表中同时拥有assignee_idprocedures而不是user_id,以便您可以致电

@user.owned_procedures
@user.assigned_procedures

获取owned_procedures的实例assigned_procedures的{​​{1}}和@user。要获取过程的Userowner,请调用

assignee