0

私のモデルには2つの列があり、1つは名前付きでもう1つはfoo_idですbar_id

これらの2つの単純なメソッドを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

self.foo_idおそらく私はドキュメントを長い間見つめていましたが、Railsに他のモデルの外部キーとして使用するように指示する方法が見つからないようです。

ほとんどの場合、これは代わりにまたはである必要があることを認識していますが、議論のために、これが可能かどうかを知りたいと思いますhas_many :throughbelongs_tohas_one

4

2 に答える 2

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 に答える
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 に答える