我正在尝试创建一个带有关联标签的歌曲,但我的create方法会抛出错误:
Tag(#70267554396440) expected, got String(#70267493763880)
我的歌曲#create:
def create
tags = params[:song][:tag_list].split(", ")
@song = current_user.songs.create(song_params)
tags.each do |tag|
if Tag.find_by(:name => tag)
@song.tags << tag
else
@song.tags.create(:name => tag)
end
end
flash[:success] = "You have successfully created a new track!"
redirect_to @song
end
我该怎么办?问题似乎是在歌曲中添加现有标签。
答案 0 :(得分:3)
您还可以使用find_or_create_by方法简化代码:
@song.tags << Tag.find_or_create_by(:name => tag.name)
查看this link以获取一些文档。
答案 1 :(得分:-1)
我们需要找到标签,然后在变量中设置它来调用它。
tags.each do |tag_name|
if t = Tag.find_by(:name => tag_name)
@song.tags << t
else
@song.tags.create(:name => tag_name)
end
end