rails多态关联不起作用

时间:2015-04-10 13:13:14

标签: ruby-on-rails rails-activerecord

我有多态关联的模型。

class Tag < ActiveRecord::Base
  #attributes target_id, target_type
  belongs_to :target, polymorphic: true
end

目标模型,即用户。

class User < ActiveRecord::Base
  has_many :tags, as: :target
end

但方法@user = User.find params[:id]; @user.tags会返回#<ActiveRecord::Associations::CollectionProxy []>,而Tag.where(target_id: @user.id, target_type: 'User')会返回除了我之外的某些对象。

怎么了?

3 个答案:

答案 0 :(得分:0)

这是一种错误的方式,因为它会给出NameError: undefined local variable or method user for main:Object之类的错误,首先你必须找到用户及其标签,如:

@user=User.find(1)

@user.tags

答案 1 :(得分:0)

User模型的实例中,您可以像这样检索tags的集合:

@user = User.find(params[:id])
@user.tags

同样,如果您拥有Tag模型的实例,则可以访问其父模型:

@tag.target

答案 2 :(得分:0)

问题解决了!

我只是添加到模型foreign_key

class User < ActiveRecord::Base
  has_many :tags, as: :target,
                  foreign_key: target_id
end

谢谢大家,他们试图提供帮助。