1

ObjectAとObjectBの2つのモデルがあります。ObjectBには、ObjectAへの外部キーであるa_1_idとa_2_idの2つの列があります。ObjectBは、これらの外部ObjectAオブジェクトのそれぞれに属しています。

class ObjectA < ActiveRecord::Base
  attr_accessible :player_1, :player_2, :subject, :turn

  belongs_to :player_1, :class_name => "User"
  belongs_to :player_2, :class_name => "User"
  has_many :object_b, dependent: :destroy, :finder_sql => "SELECT * FROM object_bs where (a_1_id = #{id} or a_2_id = #{id})" 
end

class ObjectB < ActiveRecord::Base
  attr_accessible :a_1_id, :a_2_id

  belongs_to :a_1_id, :class_name => "ObjectA"
  belongs_to :a_2_id, :class_name => "ObjectA"
end

これは、関連付けを設定するための最良の方法ですか?

4

1 に答える 1

1

:foreign_keyオプションを使用します。

belongs_to :player_1, :class_name => "User", :foreign_key => 'player1_id'
belongs_to :player_2, :class_name => "User", :foreign_key => 'player2_id'
#...
belongs_to :a_1_id, :class_name => "ObjectA", :foreign_key => 'a_1_id'
belongs_to :a_2_id, :class_name => "ObjectA", :foreign_key => 'a_2_id'
于 2012-05-16T14:41:32.257 に答える