Я сопоставляю свой внешний ключ, объявляя его в классе.
Но рельсы называют автомобиль назначенную внешним ключом и бросали ошибки, как,Почему activerecord отображает неназначенный внешний ключ?
неизвестного столбец, где положение декларации
класса приведена ниже,
class Supplier < ActiveRecord::Base
has_one :criteria
self.primary_key = 'sup_id'
end
class Criteria < ActiveRecord::Base
belongs_to :supplier, :foreign_key => "crt_sup_id"
self.primary_key = 'crt_id'
self.table_name = 'criterias'
end
Если я использую self.supplier в классе Критерии: он работает нормально
, но если я использую self.criteria в классе Поставщик, тогда ошибка брошена как,
Неизвестный столбец 'criterias.supplier_id' в 'where clause': SELECT criterias
. * FROM criterias
WHERE criterias
. supplier_id
У меня нет поля с именем vend_id в критериях, вместо этого я использую crt_sup_id, как определено в классе.
При этом я получаю еще одну ошибку NoMethodError (undefined method 'crt_sup_id 'для # <Поставщик: 0x00000015f58560>): – ejo
WTF? вы вставляете точно такой же код? Вы пытались использовать старый синтаксис хэша ': foreign_key =>" crt_sup_id "?? –
Прошу прощения, проблема в том, что некоторые из моих объектов-поставщиков не имеют критериев. Как я могу изменить свое отношение для этого? – ejo