我的Tag
模型对属性进行了一些验证name
。在所有其他情况下都可以正常工作。但是当我这样打电话时find_or_create_by_name
:
# The last value of this string (by coma) is empty.
# So this record should not be saved.
tags_line = 'ruby, javascript, '
tags_line.split(',').each do |tag_name|
tag = Tag.find_or_create_by_name(tag_name.strip) do |new_tag|
new_tag.update_attribute :user_id, member.user.id
end
# Just append tag to this model
# through `has_and_belongs_to_many :tags`
tags << tag if tag
end
但是这个空标签甚至被保存了。那么,这段代码可能有问题吗?
注意:当我删除块时,它可以工作:
...
tags_line.split(',').each do |tag_name|
# This way, invalid tag will not be created.
tag = Tag.find_or_create_by_name(tag_name.strip)
tags << tag if tag
end