我通过在课堂上声明它来映射我的外键 但是rails调用自动分配的外键并抛出错误,
where子句中的未知列
类声明如下,
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
如果我在类Criteria中使用self.supplier,它可以正常工作
但是如果我在类Supplier中使用self.criteria,则抛出错误,
'where子句'中的未知列'criterias.supplier_id':SELECT criterias
。* FROM criterias
WHERE criterias
。supplier_id
我在标准中没有名为supplier_id的字段,而是使用类中定义的crt_sup_id。
答案 0 :(得分:0)
您还必须引用has_one
关系中的外键:
class Supplier < ActiveRecord::Base
has_one :criteria, foreign_key: "crt_sup_id"
self.primary_key = 'sup_id'
end
原因是默认关联在rails中是单向的。有关详细信息,请参阅the rails guides。