簡體   English   中英

Rails,PaperClip,S3,Heroku:“模型”圖標字段未保存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM