我的模型有两列,一列名为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 :through
或belongs_to
,但为了争论,我有兴趣了解这是否可能{{1} 1}}
答案 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'
按预期工作。