如何进行涉及Paperclip的Rails迁移

17

在涉及Paperclip的Rails迁移中,人们是如何编写他们的迁移代码的呢?我感到可能我忽略了一些显而易见的东西,因为我现在已经编写了自己的迁移帮助程序,使它更加容易,并且还要对必要的文件系统更改进行处理。当然,在部署到生产环境之前,你应该在开发(和staging)环境中测试这些迁移。

Paperclip迁移重命名、添加和删除帮助程序
Paperclip更改路径迁移帮助程序(虽然并不是真正的数据库迁移,但感觉非常适合)

是否有更好的解决方案或最佳实践?有些人似乎创建了rake任务等,这感觉相当繁琐。

1个回答

38

这个gem中包含了相应的生成器:

Rails 2:

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

Rails 3:

rails generate paperclip Class attachment1 (attachment2 ...) 

e.g.

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

谢谢,我应该更清楚地表达,我的意思是大多数迁移涉及现有的paperclip列,并进行重命名和路径更改,这将需要文件系统更改等。 - Mattias Wadman
1
噢,那看看这个问题吧:https://dev59.com/IHE85IYBdhLWcg3wkkjK#6335337 - Jared
好的,那个锁大致上就是我在我的帮助程序中所做的。猜想那就是人们这样做的方式。 - Mattias Wadman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接