ActiveRecord双向外键。

时间:2011-04-19 17:29:20

标签: ruby-on-rails database activerecord foreign-keys associations

我在MYSQL中使用了一些开放的gov数据,我已将其导入到我的rails应用程序中。

我已经使用我自己的一些表扩展了数据库,并在我的表中使用rails提供的列id。

但是,原始数据库的表通过唯一的“ndb”id链接。

我认为通过在模型之间交叉引用两个:foreign_key=>'ndb'我可以正确地链接表,但是通过:foreign_key,它似乎是将一个表中的id链接到ndb列另一个。

我的模特看起来像这样

class Food < ActiveRecord::Base
has_many :weights, :foreign_key=>'ndb'
has_many :food_names
end

class Weight < ActiveRecord::Base
belongs_to :food, :foreign_key=>'ndb'

有没有办法指定'ndb'列是食物和重量表之间的链接,而不是food_id到ndb的链接?

2 个答案:

答案 0 :(得分:0)

您是否在AR课程中尝试了set_primary_key 'ndb'

set_primary_key docs。

答案 1 :(得分:0)

我作为可能的临时解决方案所做的是使用:finder_sql将表链接在一起。

我的食物模型现在有:

class Food < ActiveRecord::Base
  has_many :weights, :finder_sql =>'Select weights.* FROM weights LEFT JOIN foods ON foods.ndb=weights.ndb WHERE foods.id=#{id}'

我不确定这是否是最佳解决方案,但似乎有效。