Моя последняя миграция выполняется очень медленно (600 секунд), несмотря на то, что она мало что делает
У меня есть модель, которая содержит теги в строковом формате, разделенные запятыми, например:
Модель.tags = "TAG1, TAG2, TAG3"
Я хочу создать новую модель тега, которая имеет отношение has_and_belongs_to_many с моей моделью
Вот миграция
def self.up
rename_column :pizzas, :tags, :tags_migration
create_table :tags do |t|
t.string :name
t.integer :count
t.timestamps
end
create_join_table :tags, :pizzas do |t|
t.index [:tag_id, :pizza_id]
end
Pizza.all.each do |pizza|
pizza_tags = pizza.tags_migration
unless pizza_tags.empty?
pizza_tags_array = pizza_tags.split(', ')
pizza_tags_array.each do |tag|
t = Tag.find_by(name: tag)
if t.nil?
t = Tag.new
t.name = tag
t.count = 1
else
t.count = t.count + 1
end
t.pizzas << pizza
t.save
pizza.tags << t
pizza.save
end
end
puts "pizza n" + pizza.id.to_s
end
end
Я не думаю, что этот код должен занимать так много времени (у меня около 2000 записей)