Rails与同一模型的关联

时间:2011-05-12 15:55:11

标签: ruby-on-rails ruby-on-rails-3 activerecord

假设我有两张桌子:

Users
user_id name

Tags
tagger_id tagged_id

这描述了一种可以

的情况

我正在尝试设置的模型是:

class User < ActiveRecord::Base
    has_many :tags, :foreign_key => "tagger_id"
end

class Tag < ActiveRecord::Base
    belongs_to :tagger, :class => "User"
    belongs_to :tagged, :class => "User"
end

我正在尝试将其设置为当我这样做时:

user.tags

它返回一个User对象列表。使用我当前的设置,它只返回带有ID而不是对象的实际Tag记录。如何设置它以返回用户对象列表?

我尝试使用:

has_many :tags, :foreign_key => "tagger_id", :source => :tagged

但它不起作用。

1 个答案:

答案 0 :(得分:0)

你正在寻找has_many:通过。

class User < ActiveRecord::Base
    has_many :tags, :foreign_key => "tagger_id"
    has_many :tagged, :through => :tags
end

然后user.tagged应该会为您提供所需的用户列表。