2016-09-29 3 views
1

Просьба всем знать, могу ли я объявить отношение belongs_to дважды в то же самое поле?Rails: принадлежит_о дважды в одном и том же поле

Например:

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

Извините, ребята, решили! Ответ: Да. Это не работает, потому что я использую modules в /models реж. И я забыл ::

И право объявлять с моими модулями:

//app/models/notice/notice.rb 

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

Когда вы делаете в рельсах belongs_to, вы подразумеваете, что модель имеет внешний ключ, который имеет id таблицы, в которой она принадлежит к. Вам разрешено иметь столько же belongs_to отношений, сколько хотите, однако у всех их должно быть другое foreign_key. Ваши внешние ключи должны быть конкретными для таблиц, на которые вы ссылаетесь, например, внешний ключ AviaTicket должен быть foreign_key: 'avia_ticket_id', и он также относится к BusTicket, внешний ключ должен быть конкретным для этой таблицы, поэтому рельсы знают, какой внешний ключ искать, когда пытаясь найти соответствующие данные.

Смежные вопросы