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
感谢大家的帮助。
我有一个具有多态关联的模型。
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
感谢大家的帮助。