0

我的模型有两列,一列是命名foo_id的,另一列是bar_id.

我想知道是否可以将这两个简单的方法变成 has_one 关联:

class SomeModel < ActiveRecord::Base
  def foobar_foo
    Foobar.find( self.foo_id )
  end

  def foobar_bar
    Foobar.find( self.bar_id )
  end
end

也许我已经盯着文档太久了,但我似乎无法找到一种方法来告诉 Railsself.foo_id用作其他模型的外键。

我知道在大多数情况下,这应该是 ahas_many :through或者可能是 a belongs_to,但是为了争论,我有兴趣了解这是否可以通过 ahas_one

4

2 回答 2

0

终于有机会重新审视这个问题,顺便说一句,在尝试的最初几分钟内偶然发现了一个解决方案。

  has_one :bar, primary_key: :bar_id, foreign_key: :id, class_name: 'Foobar'
  has_one :foo, primary_key: :foo_id, foreign_key: :id, class_name: 'Foobar'

按预期工作。

于 2013-02-12T01:08:01.847 回答
0

这有帮助吗?

has_one :foo, class_name: "Foobar", foreign_key: :foo_id
has_one :bar, class_name: "Foobar", foreign_key: :bar_id

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one

于 2012-10-28T04:29:30.660 回答