Rails - 与另一个表的关联

时间:2013-05-01 19:51:17

标签: ruby-on-rails

我有一个用户表(和用户模型)。在我的场景中,用户可以拥有多个身份。即用户michael1(id = 1)可以连接到michael2(id = 2)和michael3(id = 3)。

我创建了一个表来存储这些连接。我称之为user_relations,它有:id,user_id,related_user_id列。在前面的例子中,我将:

user_id | related_user_id

1 | 2

1 | 3

在我定义的用户模型中:has_many:user_relations,在我定义的user_relation中:belongs_to:users。

现在,我希望当我有一个用户对象时,我可以得到:

current_user.user_relations - 获取根据表连接的所有用户对象。在前面的示例中,如果我将current_user作为id为1的用户,我希望获得id为2和3的用户。

我怎样才能做到这一点?

BTW - 我有一个id,因为我看到没有它,我无法使用destroy_all。如果有人也对此有所了解,我很乐意听到。

1 个答案:

答案 0 :(得分:1)

我认为这应该有效。如果我错过了某些内容,您可以查看here了解详细信息:

class User < ActiveRecord::Base
  has_many :user_relations
  has_many :related_users, :through=> :user_relations
end

class UserRelations< ActiveRecord::Base
  belongs_to :user, :class_name => "User", :foreign_key => "user_id"
  belongs_to :related_user, :class_name => "User", :foreign_key => "related_user_id"
end