Ruby on rails 如何定制可标记的行为?

Ruby on rails 如何定制可标记的行为?,ruby-on-rails,tags,acts-as-taggable-on,Ruby On Rails,Tags,Acts As Taggable On,如何定制可标记的行为 我的数据库里有标签,贴子,贴子(型号:标签,贴子,贴子) 我做:gem'充当Gemfile中“~>2.2.2”上的标记 生成迁移时,我发现它已经生成了默认表(tags、tagger、tagging) 如何自定义默认选项以适应我的模型?所有标记都存储在ActsAsTaggableOn::Tag(:id,:name)模型中,并通过ActsAsTaggableOn::Taggable(:id,:Tag_id,:Taggable_type,:TagGableA_id,:contex

如何定制可标记的行为

我的数据库里有标签,贴子,贴子(型号:标签,贴子,贴子)

我做:gem'充当Gemfile中“~>2.2.2”上的标记

生成迁移时,我发现它已经生成了默认表(tags、tagger、tagging)

如何自定义默认选项以适应我的模型?

所有标记都存储在ActsAsTaggableOn::Tag(:id,:name)模型中,并通过ActsAsTaggableOn::Taggable(:id,:Tag_id,:Taggable_type,:TagGableA_id,:context等)模型访问

如果您希望切换到“作为标记的行为”,并且不丢失以前添加的标记,则应在默认表上创建“作为标记的行为”后创建迁移或rake任务

像这样:

# 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.
我没有测试这个代码段,但我以前也成功地做过类似的事情。

所有标记都存储在actsastaggaleon::Tag(:id,:name)模型中,并通过actsastaggaleon::Taggable(:id,:Tag_id,:Taggable_type,:Taggable_id,:context等)模型访问

如果您希望切换到“作为标记的行为”,并且不丢失以前添加的标记,则应在默认表上创建“作为标记的行为”后创建迁移或rake任务

像这样:

# 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.
我没有测试这个片段,但我以前也成功地做过类似的事情