所有標籤都存儲在 ActsAsTaggableOn ::標籤(:身份證,:名稱)模型,並通過 ActsAsTaggableOn ::加標籤獲得訪問(:身份證,:TAG_ID,:taggable_type,:taggable_id,:背景等)模型。
如果您希望切換爲可作爲標籤的行爲,而不會丟失之前添加的標籤,則應在創建行爲作爲標籤後在默認表上創建遷移或耙子任務。
像這樣:
# In your model
acts_as_taggable_on :post_tags
# Rake task
require 'acts-as-taggable-on'
task :move_tags => [:environment] do
@posts = Post.all
Post.transaction do
Tag.transaction do
@posts.each do |p|
if p.tags.any?
p.update_attributes post_tag_list: p.tags.map(&:name)
p.tags.map(&:destroy)
end
end
end
end
end
# Now, if all is ok, you can drop both old tags and join table and remove associasions from your Post model.
我沒有測試這個片段,但我已經成功做過類似的事情。