Rails:如何使用has_one关联完成此操作?

时间:2012-10-28 01:16:42

标签: ruby-on-rails ruby associations model-associations has-one

我的模型有两列,一列名为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

也许我一直在盯着文档太长时间,但我似乎无法找到一种方法告诉Rails使用self.foo_id作为其他模型的外键。

我知道在大多数情况下,这应该是has_many :throughbelongs_to,但为了争论,我有兴趣了解这是否可能{{1} 1}}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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'

按预期工作。