我的模型中有一个非常常见的多对多关联,每个story
has_many tags
,我想要做的就是能够更新所有一个简单的事情,故事的标签。现在我只是删除所有关系并再次写它们,基本上:
def update_tags(tag_list)
self.tags.clear
tag_list.each { |tag| self.tags << tag }
save
end
但我觉得这是一种肮脏的做事方式,因为这个问题有更好的解决方案吗?像
这样的东西self.tags = tag_list
save
虽然这当然不起作用:)
编辑:所以后者工作,事实证明我正在使用map构建一个列表,并且在map块中我使用了一个return语句,我删除了它(使用隐式返回我猜)它现在可以工作了!答案 0 :(得分:2)
为什么不呢? http://guides.rubyonrails.org/association_basics.html#methods-added-by-has-many-collection-objects
def update_tags(tag_list)
self.tags = tag_list
end
这必须有效。