场景:我们有一些用户在网站上谁已经上传了他们的网站徽标。最近,我们改变了这个标志的尺寸,并希望所有帐户都能反映这一变化(我们也从我们的应用程序中删除了retina_rails )。因此,我们计划做一个迁移,以删除视网膜轨道,同时循环通过每个帐户,并重新上传的标志,以正常化跨越所有的标志。
目前,这是迁移的样子:
class RemoveRetinaDimensionsFromAccounts < ActiveRecord::Migration
def change
remove_column :accounts, :retina_dimensions, :text
end
ActsAsTenant.configure.require_tenant = false
Account.all.each do |account|
if account.logo?
account.logo.cache_stored_file!
account.logo.retrieve_from_cache!(account.logo.cache_name)
account.logo.recreate_versions!(:small, :small)
account.save!
end
end
ActsAsTenant.configure.require_tenant = true
end这就是我们的carrierwave.rb文件的样子:
CarrierWave.configure do |config|
if Rails.env.test?
config.storage = :file
config.enable_processing = false
elsif Rails.env.development?
config.storage = :file
config.cache_dir = "#{Rails.root}/tmp/uploads"
elsif Rails.env.staging?
config.storage = :fog
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => Rails.application.secrets.aws_access_key_id, # required
:aws_secret_access_key => Rails.application.secrets.aws_secret_access_key, # required
:region => 'us-west-2' # optional, defaults to 'us-east-1'
}
config.fog_directory = 'blvd-staging' # required
config.fog_public = false
end
end我试着遵循这个链接https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Recreate-and-reprocess-your-files-stored-on-fog中提到的建议,但是它不起作用。我已经进行了测试,以确保缓存正在保存文件,而且确实如此。但是,当我尝试和retrieve_from_cache!我无法这样做(因为缓存的文件没有名称)。
这就是我缓存的文件的样子:
tmp上传#
谢谢。
发布于 2015-03-04 23:03:15
结果,我没有在迁移中的变更块中运行所需的代码块,所以代码永远不会被执行。
https://stackoverflow.com/questions/28844957
复制相似问题