我正在使用 Rails 3.1 编写一个 RPG 网站,并且我有一个用户模型(字段并不重要)。
我需要的是能够将两个用户结合起来,但我不知道对于关联来说最好的方式是什么。
我将 user1 和 user2 视为列,但在将其与 User 模型关联以了解用户是否已婚时,我不知道如何说两者是相同的。 (也就是说,用户 ID 可以位于一列或另一列...)
提前谢谢您!
最佳答案
如果始终是一对一,您可以这样设置:
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(如果是传统婚姻) 。例如。如果您走的是性传播感染路线:
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
关于ruby-on-rails - 在 Rails 中创建 "couple"系统的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7053254/