2012-03-21 5 views
0

Как сделать заказ act_as_taggable_on?Как выполнить custom actions_as_taggable_on?

В моей базе данных были теги, post_tags, сообщения (модель: тег, PostTag, Post).

i do: gem 'act-as-taggable-on', '~> 2.2.2' в Gemfile.

При создании миграции я обнаружил, что он создал таблицы по умолчанию (теги, теги, теги).

Как настроить параметр по умолчанию для адаптации моей модели?

ответ

2

Все теги хранятся в ActsAsTaggableOn :: Tag (: идентификатор,: имя) модель и получить доступ через ActsAsTaggableOn :: Taggable (: o ID: tag_id,: taggable_type,: taggable_id,: контекст и т.д.) модель.

Если вы хотите переключиться на act-as-taggable и не терять свои ранее добавленные теги, вы должны создать задачу миграции или грабли после создания таблиц по умолчанию для act-as-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. 

Я не проверял этот фрагмент кода, но я успешно сделал нечто подобное раньше.

 Смежные вопросы

  • Нет связанных вопросов^_^