使用STI的多关联不起作用

时间:2013-12-17 12:20:19

标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2 sti

我有Employee模型和TicketStatus模型 在STI模型上使用Employee方法,以便拥有子模型'Advisor''Staff',在TicketStatus我想要实现以下内容:制作一个TicketStatusAdvisorTicketStatusStaff,然后TicketStatusPreviousAdvisorTicketStatusPreviousStaff之间的关系,我的代码是这样的:

class TicketStatus < ActiveRecord::Base
  attr_accessible :status_id, :ticket_id , :staff_id, :advisor_id, :previous_advisor_id, :previous_staff_id
  belongs_to :status
  belongs_to :ticket
  belongs_to :staff, class_name: 'Staff', foreign_key: 'staff_id'
  belongs_to :previous_staff , class_name: 'Staff', foreign_key: 'previous_staff_id'
  belongs_to :advisor, class_name: 'Advisor', foreign_key: 'advisor_id'
  belongs_to :previous_advisor, class_name: 'Advisor', foreign_key: 'previous_advisor_id'
end

enter image description here

问题是我在同一个class name上不能有两个关联,在使用rubymine生成依赖关系图后我发现第二个关联覆盖了第一个关联,我该怎么做才能使这些关联工作正确吗?

1 个答案:

答案 0 :(得分:0)

这是因为外键是相同的。您可以在以下两种情况下指定第二个关系的外键:

belongs_to :previous_staff , class_name: 'Staff', foreign_key: 'previous_staff_id'

belongs_to :previous_advisor, class_name: 'Advisor', foreign_key: 'previous_advisor_id'

这将保留单独的关系。 staffadvisor关系很好。

编辑:在对问题进行大量修改后回答了这个问题。