如何进行涉及Paperclip的Rails迁移

人们如何编写涉及Paperclip的Rails迁移? 我觉得我可能会遗漏一些显而易见的东西,因为我现在已经编写了自己的迁移助手黑客,这使得它变得更容易并且还可以处理必要的文件系统更改。 当然,您应该在部署到生产之前在开发(和暂存)环境中测试运行这些类型的迁移。

Paperclip迁移重命名,添加和删除帮助程序
Paperclip更改路径迁移帮助程序 (不是真正的数据库迁移,但认为它非常适合)

有没有更好的解决方案或最佳实践? 有些人似乎创造了耙子任务等,感觉非常麻烦。

gem中包含了生成器:

Rails 2:

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

Rails 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 

另请参阅自述文件中示例中使用的帮助程序方法

 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