Если это всегда один к одному, вы можете настроить его так:
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