我有:
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>
我该如何解决这个问题?
由于
答案 0 :(得分:0)
.find_or_create_by
返回单个对象,而不是集合。 @offer.tags =
需要设置为集合,而不是单个对象。
您可以使用@offer.tags << Tag.find_or_create_by
如果您采用这种方法,我建议您添加uniq
约束,这样您就不会有多个与同一标记的标记关联。