0

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

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

用户 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 的用户。

我怎样才能做到这一点?

顺便说一句 - 我有一个 id,因为我看到没有它,我无法使用 destroy_all。如果有人对此也有见解,我愿意倾听。

4

1 回答 1

1

我认为这应该有效。如果我错过了什么,你可以在这里查看详细信息:

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
于 2013-05-01T20:05:43.273 回答