Rails:在同一个字段上的belongs_to两次

时间:2016-09-29 14:07:24

标签: ruby-on-rails

请有人知道,我可以两次向同一领域宣布关系belongs_to吗?

例如:

class Notice < ApplicationRecord
  belongs_to :avia, foreign_key: 'ticket_id', class_name: 'AviaTicket'
  belongs_to :bus, foreign_key: 'ticket_id', class_name: 'BusTicket'
end

通过这种方式,我对不同的模型使用了ticket_id两次。在belongs_to方面,它可以正常工作,但在其他方面(AviaTicketBusTicket)可以正常工作。

2 个答案:

答案 0 :(得分:0)

对不起伙计们,解决了!答案是肯定的。 它不起作用,因为我在modules目录中使用了/models。我忘记了::

然后用我的模块声明:

//app/models/notice/notice.rb

class Notice::Notice < ApplicationRecord
.
.
  belongs_to :bus, foreign_key: 'ticket_id', class_name: '::BusTicket'
.
.
end

答案 1 :(得分:0)

当您在rails中执行belongs_to时,您暗示模型的外键具有其所属表的id。您可以根据需要拥有尽可能多的belongs_to关系,但是,它们都必须具有不同的foreign_key。您的外键应该特定于您所引用的表,例如,AviaTicket的外键应该是foreign_key: 'avia_ticket_id',同样适用于BusTicket,外键应该特定于该表,这样rails会在尝试查找相应数据时知道要查找的外键。