我正在使用carrierwave在我的rails項目中上傳圖像。這是我的uploader
類。NoMethodError(未定義的方法`id'for nil:NilClass):在CarrierWave模型中
class ProfilePictureUploader < CarrierWave::Uploader::Base
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
我在model
使用mount_uploader :avatar , ProfilePictureUploader
是不。相反,我用這個在我的模型
uploader = ProfilePictureUploader.new
uploader.store!(file)
self.image = uploader.url
self.save
但是,這是給我一個錯誤說
NoMethodError(未定義的方法'身份證」的零:NilClass)
可以理解的model
實例在ProfilePictureUploader
中不可用。所以store_dir
方法不能訪問model.id
。我怎樣才能得到與此流程類似的目錄結構。
這不是this problem的重複。對我而言,uploader
的model
屬性不可用。
的可能的複製[Carrierwave:文件哈希和型號ID文件名/店\ _dir(http://stackoverflow.com/問題/ 18460686/carrierwave-file-hash-and-model-id-in-filename-store-dir) –
This is not a duplicate of this http://stackoverflow.com/questions/18460686/carrierwave-file-hash- and-model-id-in-filename-store-dir。對我而言,上傳器的模型屬性不可用。 – raj
是的,你是對的。 –