Rails - 定义一对模型

时间:2014-08-12 17:01:37

标签: ruby-on-rails ruby-on-rails-4 relation

我想在同一个类的两个对象(Similarity)之间创建一个“情侣”模型(User)。

users模型Similarity的顺序无关紧要。换句话说,user1和user2之间的相似性是user2和user1之间的相似性。

class User < AR::Base
end

class Similarity < AR::Base
  belongs_to :user
  belongs_to :second_user, :class_name => 'User'
  # Some AR attributes here (can not be a HABTM)
end

我正在尝试获取用户的所有“类似”用户。可以用

定义关系
class User
  has_many :similarities
  has_many :right_similarities, :class_name => 'Similarity',
                                :foreign_key => 'second_user_id'

  def all_similarities
    return similarities + right_similarities
  end

  has_many :similar_users, :through => :similarities,
                          :source => :second_user
  has_many :right_similar_users, :through => :right_similarities,
                                 :source => :user

  def all_similar_users
    return similar_users + right_similar_users
  end
end

但这显然效率不高,难以阅读。

如何在“Rails关系方式”中声明上述这些关系?

此致

0 个答案:

没有答案