为什么activerecord是映射未分配的外键?

时间:2013-04-24 10:18:32

标签: ruby-on-rails-3 activerecord

我通过在课堂上声明它来映射我的外键 但是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 criteriassupplier_id

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

1 个答案:

答案 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