rails 多态关联不起作用

rails polymorphic association doesn't working

我有一个具有多态关联的模型。

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 returns #<ActiveRecord::Associations::CollectionProxy []>Tag.where(target_id: @user.id, target_type: 'User') returns 我排除了一些对象。

怎么了?

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

@user=User.find(1)

@user.tags

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

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

同样,如果你有一个 Tag 模型的实例,你可以找到它的父模型:

@tag.target

问题已解决!

我只是添加到模型 foreign_key

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

感谢大家的帮助。