Ruby on rails 具有相同模型的Rails关联
我有两个班,有以下联系:Ruby on rails 具有相同模型的Rails关联,ruby-on-rails,associations,Ruby On Rails,Associations,我有两个班,有以下联系: class Incident has_one :assignee has_one :technician class User has_many :incidents 请注意,Assignment和technician字段指的是User类型的对象。这些关系在模型中应该是怎样的?假设事件应该属于受让人和技术人员,因为保存这些关系的外键将在事件表中,而不是员工表中 class Incident belongs_to :assignee, :class_
class Incident
has_one :assignee
has_one :technician
class User
has_many :incidents
请注意,Assignment和technician字段指的是User类型的对象。这些关系在模型中应该是怎样的?假设事件应该属于受让人和技术人员,因为保存这些关系的外键将在事件表中,而不是员工表中 class Incident belongs_to :assignee, :class_name => 'User' belongs_to :technician, :class_name => 'User' class User has_many :assigned_incidents, :class_name => 'Incident', :foreign_key => 'assignee_id' # not sure the wording you'd want to use for this relationship has_many :technician_incidents, :class_name => 'Incident', :foreign_key => 'technician_id' 班级事件 属于:受让人,类别名称=>'User' 属于:技师,:class\u name=>“用户” 类用户 有多个:已分配的事件,:类名称=>'事件',:外键=>'受让人id' #不确定您希望用于此关系的措辞 有很多:技师事件,:class\u name=>“事件”;:foreign\u key=>“技师id”
您可能希望外键字段为
事件。受让人id
,事件。技术人员id
以下是此问题的完整答案,以防访问此问题的人很难将所有内容放在一起(就像我第一次研究此问题时那样)
答案的某些部分发生在您的迁移中,有些则发生在您的模型中:
迁移
以下是您的用户模型:
class User < ActiveRecord::Base
has_many :assigned_incidents, :class_name => 'Incident', :foreign_key => 'assignee_id'
has_many :incidents_as_technician, :class_name => 'Incident', :foreign_key => 'technician_id'
end
执行上述任一操作都将返回事件模型的实例数组
class Incident < ActiveRecord::Base
belongs_to :assignee, class_name => 'User'
belongs_to :technician, class_name => 'User'
end
Incident.assignee.name
Incident.technician.email
class User < ActiveRecord::Base
has_many :assigned_incidents, :class_name => 'Incident', :foreign_key => 'assignee_id'
has_many :incidents_as_technician, :class_name => 'Incident', :foreign_key => 'technician_id'
end
User.assigned_incidents
User.incidents_as_technician