我有一个用户模型,我想配对用户。因此user1可以与user2配对。我想将这些关系存储在名为Pair的单独模型中。此Pair模型具有2个整数属性:user_id
和pair_id
。两者都将包含User模型中的ID。
class User < ActiveRecord::Base
has_one :pair
end
class Pair < ActiveRecord::Base
belongs_to :user, foreign_key: 'user_id'
belongs_to :pair, foreign_key: 'pair_id'
end
这允许我这样做:
User.first.pair
我得到了Pair模型的一个实例。
但如果我想在一步中直接得到这对,我必须这样做:
User.first.pair.pair
这看起来很难看。 有没有更好的方法呢?
作为奖励,能够做到这一点真是令人惊讶:
User.first.pair = User.last
答案 0 :(得分:0)
为了摆脱双对调用,我们可以像这样在User模型中重新定义关联:
class User < ActiveRecord::Base
has_one :pair_record, class_name: 'Pair'
has_one :pair, through: :pair_record
end
这样你可以做以下事情:
u1 = User.find(1)
u2 = User.find(2)
u1.pair = u2
u1.pair # -> u2