2

我在我的 Rails 应用程序中使用acts_as_taggable_on,我想就合并两个标签的最佳方式提出建议。

例如,如果我有一个食品记录列表,其中一些被标记为“奶酪”,一些被标记为“牛奶”,那么将这些标签组合成一个“乳制品”标签的最佳方式是什么?我应该只找到所有标记为“奶酪”和/或“牛奶”的记录,用新的“乳制品”标签标记这些记录,并删除“奶酪”和“牛奶”标签和标签,还是有更好的方法来做这个?

我查看了 gem 的文档和规范,但没有看到任何可以组合多个标签的专用方法。如果我采用上面建议的多步骤路线,如果其中一个步骤失败(如果某些记录由于某种原因没有被标记为“乳制品”和“奶酪”标签,我是否会冒任何弄乱标记的风险?被“删除)?

4

1 回答 1

5

如果要确保除非所有更改都成功,否则不会更改任何标签,请使用数据库事务。代码看起来像这样:

Food.transaction do
  Food.tagged_with('milk', 'cheese').each do |food|
    food.tag_list -= ['milk', 'cheese']
    food.tag_list << 'dairy'
    food.save!
  end
end
于 2010-08-28T22:12:53.957 回答