それは常に一から一だ場合は、このようにそれを設定できます。同様に逆の関係を処理する必要があります
class User
belongs_to :partner, :foreign_key => :partner_id, :class_name => 'User', :inverse_of => :partner
end
を、例えば
user_1.partner = user_2
user_2.partner # <user_1>
あなたはクラスとしてMarriage
が必要な場合は、結婚はちょうどhas_many
を通じてユーザーに関連し、(それは伝統的な結婚の場合)ユーザーの#が2であることを確認できました。例えば。あなたはSTIルート行けば:
class Marriage < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :marriage
end
class TraditionalMarriage < Marriage
validate do |record|
if record.users.length != 2
record.errors.add(:users, "Marriage is between 2 people!!")
end
end
end
class PartyTimeMarriage < Marriage
validate do |record|
if record.users.length < 3
record.errors.add(:users, "A good marriage requires at least three spouses!!")
end
end
end
、これは動作しますが、あなたは、外部クラスとして 'Marriage'を失うことになります。結婚 'has_many'ユーザーの場合は、外部クラスとしての結婚はまだ有効ですが、その数は2であることを確認してください。 – numbers1311407
+1初めて、私は逆、niceを見たことがあります - http://apidock.com/rails/ ActiveRecord/Associations/ClassMethods/belongs_to – house9
+1。あなたのリファクタにSTIをうまく使ってください。 –