2016-05-29 3 views
0

У меня есть следующие модели:Rails STI has_many и belongs_to продолжают искать типа колонки

class Installation < ActiveRecord::Base 
    belongs_to :original_lead, class_name: 'Lead' 
end 

class Lead < ActiveRecord::Base 
    has_many :originated_installations, as: :original_lead, class_name: 'Installation' 
end 

Ведущий использует STI, имея столбец типа.

Это означает, что я хочу, чтобы каждый привод имел несколько установок.

Проблема заключается в том, когда я пытаюсь сделать что-то вроде:

Lead.first.installations 

Это вызывает ошибку

PG::UndefinedColumn: ERROR: column installations.original_lead_type 
does not exist LINE 1: ...WHERE "installations"."original_lead_id" = $1 AND 
"installations"."original_lead_type" = $2 

Таким образом, он ищет для установки, которая принадлежит к определенному типу свинцовой, но Меня не волнует тип свинца.

мне удалось обойти, что при замене оператора has_many на Lead модели следующим образом:

has_many :originated_installations, inverse_of: :original_lead, 
foreign_key: :original_lead_id, class_name: 'Installation' 

Так что, да, моя проблема решена, я просто хотел бы поделиться и знать, есть ли какой-то другой вариант, который я мог бы использовать вместо этого.

ответ

0

заменить оператор has_many следующим образом решает исходную задачу:

class Lead < ActiveRecord::Base 
    has_many :originated_installations, inverse_of: :original_lead, 
foreign_key: :original_lead_id, class_name: 'Installation' 
end 
Смежные вопросы