0

我通过在类中声明它来映射我的外键。
但是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  

如果我在类标准中使用 self.supplier 它工作正常

但是如果我在类 Supplier 中使用 self.criteria 则抛出错误,

“where 子句”中的未知列“criterias.supplier_id”:SELECT criterias.* FROM criterias WHERE criteriassupplier_id

我在标准中没有名为 supplier_id 的字段,而是使用类中定义的 crt_sup_id。

4

1 回答 1

0

您还必须在has_one关系中引用外键:

class Supplier < ActiveRecord::Base  
  has_one :criteria, foreign_key: "crt_sup_id"   
  self.primary_key = 'sup_id'  
end  

原因是默认情况下,rails 中的关联是单向的。有关详细信息,请参阅导轨指南

于 2013-04-24T11:23:49.117 回答