[英]Rails, PaperClip, S3, Heroku: Model icon fields not being saved
我正在使用Rails 3.2 + Heroku + S3 + Paperclip在我的User
模型上存儲一個圖標。 該模型雖然沒有保存4個圖標字段。 正在正確處理圖像並將其保存在S3上,並且沒有發生任何錯誤。 我也有另一個模型,該模型具有通過Paperclip和S3存儲的文檔。 該模型在所有情況下均能完美運行。 User
圖標在本地有效,但在Heroku上無效。
production.rb
相關配置
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['AWS_BUCKET'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
用戶型號代碼:
class User < ActiveRecord::Base
attr_accessible :icon
has_attached_file :icon, :url => "/system/:rails_env/:attachment/:style/:hash.:extension",
:hash_data => ":class/:attachment/:id",
:hash_secret => "superSecretThing",
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:default_url => "/blank.png"
...
控制器代碼:(該代碼有點瘋狂,因為我正在對Base64編碼的AJAXing文件進行編碼。)
params[:user][:icon_data]
decoded_file = Base64.decode64(data)
begin
split_name = params[:user][:icon_file_name].split(".")
file = Tempfile.new([split_name[0..-2].join("."), ".#{split_name[-1]}"])
file.binmode
file.write(decoded_file)
file.close
@user.icon = open(file)
@user.icon_file_name = params[:user][:icon_file_name]
ensure
file.unlink
end
@user.save
我對另一個帶有回形針附件的模型進行了幾乎相同的處理,並且可以完美地工作。 在這兩種情況下,附件都被正確保存到S3,並且沒有出現錯誤。 該要點包含 Heroku日志中控制器操作的示例輸出 。
我很困惑,因為其他模型工作正常。 唯一的真正區別是User
附件可以進行圖像處理,但是該部分工作正常。
問題與此相同,但是那里的解決方案不適用。
思考?
因此,問題在於, 不包括:path
參數會使它嘗試同時對URL和路徑使用:url
參數。 真正的解決方法是在URL之外還包括:path
參數。
例如,一個既可以在本地運行又可以在Heroku上運行的固定配置:
has_attached_file :icon,
:url => "/system/:rails_env/:attachment/:style/:hash.:extension",
:path => "public/system/:rails_env/:attachment/:style/:hash.:extension",
:hash_data => ":class/:attachment/:id",
:hash_secret => "superDuperSecret",
:styles => { :medium => "300x300>", :thumb => "100x100>" },
:default_url => "/blank.png"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.