分配 has_and_belongs_to_many 关系
Assign has_and_belongs_to_many relation
我有:
class Offer < ActiveRecord::Base
...
has_and_belongs_to_many :tags
...
end
class Tag < ActiveRecord::Base
...
has_and_belongs_to_many :offers
...
end
和
def create
...
@offer = @commercial_activity.offers.build(offer_params)
tagsname = params[:tags].split(',')
for tag in tagsname
@offer.tags = Tag.find_or_create_by(name: tag, city_id: @commercial_activity.city)
end
...
end
当我创建新优惠时出现此错误:
undefined method `each' for #<Tag:0x9fcc918>
我该如何解决这个问题?
谢谢
.find_or_create_by
returns 单个对象,不是集合。 @offer.tags =
需要设置为一个集合,而不是单个对象。
您可以使用@offer.tags << Tag.find_or_create_by
如果您也采用这种方法,我建议您添加一个 uniq
约束,这样您就不会将多个标签关联到同一标签。
我有:
class Offer < ActiveRecord::Base
...
has_and_belongs_to_many :tags
...
end
class Tag < ActiveRecord::Base
...
has_and_belongs_to_many :offers
...
end
和
def create
...
@offer = @commercial_activity.offers.build(offer_params)
tagsname = params[:tags].split(',')
for tag in tagsname
@offer.tags = Tag.find_or_create_by(name: tag, city_id: @commercial_activity.city)
end
...
end
当我创建新优惠时出现此错误:
undefined method `each' for #<Tag:0x9fcc918>
我该如何解决这个问题?
谢谢
.find_or_create_by
returns 单个对象,不是集合。 @offer.tags =
需要设置为一个集合,而不是单个对象。
您可以使用@offer.tags << Tag.find_or_create_by
如果您也采用这种方法,我建议您添加一个 uniq
约束,这样您就不会将多个标签关联到同一标签。