【问题标题】:Multi-association using STI is not working使用 STI 的多关联不起作用
【发布时间】:2013-12-17 12:20:18
【问题描述】:

我有Employee 模型和TicketStatus 模型 在Employee 模型上使用STI 方法,以便在我的TicketStatus 内部拥有子模型'Advisor''Staff',我试图实现以下目标:在TicketStatusAdvisor 之间建立关系, TicketStatusStaff,然后是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

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

【问题讨论】:

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


    【解决方案1】:

    发生这种情况是因为外键相同。在这两种情况下,您都可以指定第二个关系的外键应该是什么,如下所示:

    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 关系很好。

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

    【讨论】:

    • 我已经更新了我的问题,我已经为每个关联指定了外键但仍然有同样的问题,我添加了图表中的屏幕截图
    • 我没有改变任何东西,但我假设您实际上通过运行rails c 尝试了这一点,或者您只是按照我的 ruby​​ 所说的话?没有
    • 我已经添加了外键然后生成了一个图表它仍然覆盖了关联
    • 是的,但就像你不能 100% 确定 ruby​​ mine 是错误的一样。这可能是一个错误,为什么不在控制台中运行它并尝试一下呢?
    猜你喜欢
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    相关资源
    最近更新 更多