请有人知道,我可以两次向同一领域宣布关系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
方面,它可以正常工作,但在其他方面(AviaTicket
,BusTicket
)可以正常工作。
答案 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会在尝试查找相应数据时知道要查找的外键。