has_many和遗留计划

时间:2009-06-26 10:47:15

标签: ruby-on-rails activerecord

我在这里寻求建议:

我在遗留方案中有两个表AB,已加入A.somename = B.othername。这两列都是字符串。那么如何在rails(v2.1.0)中设置它们之间的关系呢?鉴于A有许多B,最佳做法是什么:

  1. 使用:finder_sql并编写SQL select

  2. 通过其他参数配置关系(如何?我知道我可以设置:foreign_key = 'othername',但这只会尝试设置A.id = B.othername关系 - 我该怎么做才能设置纠正一个?),

  3. 其他一些我没想过的东西。

  4. 那么,你会建议什么?

1 个答案:

答案 0 :(得分:1)

如果由于某些原因你坚持使用Rails 2.1,那么最佳选择似乎是使用set_primary_key,如下所示:

class A
  set_primary_key 'somename'
  has_many :bs, :foreign_key => 'othername'
end

还有一个别名,可让您使用类似属性的语法(self.primary_key = 'somename')。

顺便说一句,如果您能够升级到2.3,则可以直接使用primary_key选项has_many,如下所示:

has_many :debitos, :primary_key => 'somename', :foreign_key => 'othername'

如果您选择使用此功能,则无需使用set_primary_key为该类声明主键。