2012-03-21 11 views
0

どのようにカスタムacts_as_taggable_on?どのようにカスタムacts_as_taggable_on?

iveには、データベースにタグ、post_tags、posts(モデル:Tag、PostTag、Post)がありました。

私はこうします:gem 'のact-as-taggable-on'、 '〜> 2.2.2' in Gemfile。

マイグレーションを生成すると、デフォルトのテーブル(タグ、タグ、タグ)が生成されています。

私のモデルに合わせてカスタムをカスタマイズする方法は?

答えて

2

すべてのタグが ActsAsTaggableOn ::タグに格納されている(:ID:名)モデルと ActsAsTaggableOnを介してアクセスします::タグ付け可能(:ID:TAG_ID、:taggable_type、:taggable_id、:コンテキストなど)モデル。

act-as-taggableに切り替え、以前に追加したタグを失うことがないようにするには、taggable-onのデフォルト表を作成した後で、マイグレーションまたはレーキ・タスクを作成する必要があります。このよう

# 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. 

私はこのスニペットをテストしていないが、私は成功した前に同じようなことをやりました。