Как выполнить миграцию Rails с использованием Paperclip - PullRequest
16 голосов
/ 19 октября 2011

Как люди пишут свои миграции на Rails, которые включают Скрепка ? Я чувствую, что, возможно, упускаю что-то очевидное, так как сейчас я написал собственные хаки для помощников по миграции, которые упрощают его, а также заботятся о внесении необходимых изменений в файловую систему. И, конечно, вы должны протестировать такие миграции в среде разработки (и промежуточной) перед развертыванием в рабочей среде.

Перемещение Paperclip переименовывает, добавляет и удаляет помощники
Помощник по изменению пути изменения скрепки (на самом деле не миграция базы данных, но думаю, что она в любом случае подходит)

Есть ли лучшие решения или лучшие практики? некоторые люди, кажется, создают задачи с граблями и т. д., что кажется довольно громоздким.

1 Ответ

37 голосов
/ 24 декабря 2011

Для этого в гем включены генераторы:

Рельсы 2:

script/generate paperclip Class attachment1 (attachment2 ...)

Рельсы 3:

rails generate paperclip Class attachment1 (attachment2 ...) 

например.

rails generate paperclip User avatar 

генерирует:

class AddAttachmentsAvatarToUser < ActiveRecord::Migration
  def self.up
    add_column :users, :avatar_file_name, :string
    add_column :users, :avatar_content_type, :string
    add_column :users, :avatar_file_size, :integer
    add_column :users, :avatar_updated_at, :datetime
  end

  def self.down
    remove_column :users, :avatar_file_name
    remove_column :users, :avatar_content_type
    remove_column :users, :avatar_file_size
    remove_column :users, :avatar_updated_at
  end
end

Также см. Вспомогательные методы, используемые в примере, в readme

class AddAvatarColumnsToUser < ActiveRecord::Migration
  def self.up
    change_table :users do |t|
      t.has_attached_file :avatar
    end
  end

  def self.down
    drop_attached_file :users, :avatar
  end
end
...