NoMethodError(nil:NilClass 的未定义方法“id”):在 CarrierWave 模型中
NoMethodError (undefined method `id' for nil:NilClass): in CarrierWave model
我在 rails 项目中使用载波上传图像。这是我的 uploader
class.
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 (undefined method `id' for nil:NilClass)
可以理解 model
实例在 ProfilePictureUploader
中不可用。所以 store_dir
方法无法访问 model.id
。如何使用此流程获得类似的目录结构。
这不是 this problem 的副本。对我来说,uploader
的 model
属性不可用。
我认为您应该使用您的模型实例正确初始化您的上传器:
mounted_as = "profile-or-something-else"
uploader = ProfilePictureUploader.new(self, mounted_as)
uploader.store!(file)
self.image = uploader.url
self.save
我在 rails 项目中使用载波上传图像。这是我的 uploader
class.
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 (undefined method `id' for nil:NilClass)
可以理解 model
实例在 ProfilePictureUploader
中不可用。所以 store_dir
方法无法访问 model.id
。如何使用此流程获得类似的目录结构。
这不是 this problem 的副本。对我来说,uploader
的 model
属性不可用。
我认为您应该使用您的模型实例正确初始化您的上传器:
mounted_as = "profile-or-something-else"
uploader = ProfilePictureUploader.new(self, mounted_as)
uploader.store!(file)
self.image = uploader.url
self.save