我无法在自定义类中调用CarrierWave current_path。
NoMethodError: private method `try' called for #<CarrierWave::SanitizedFile:0x007fadf259fbf8>
def send_letter(letter)
data = {}
data[:attachment] = File.new("#{letter.template.attachment.current_path}", 'rb')
end
发生在letter.template.attachment.current_path调用中,我不明白为什么。在rails控制台中,相同的命令工作得很好......但是当我尝试使用rake任务运行它时,它会因NoMethodError(上面)而失败。如何获取文件的路径而不是current_path(如果是使用CarrierWave上传的话)。感谢你的时间!
UPDATE 谢谢你的回答。 letter.template.present? - 真的
letter.template.attachment.present? -true
letter.template.attachment.methods.respond_to?(:current_path) - false
但是letter.template.attachment.methods(有:current_path)
:cache!,:cache_name,:retrieve_from_cache!,:cache_stored_file!,:sanitized_file,:model,:mounted_as,:to_s,:length,:size,:path,:read,:content_type,:identifier,:blank ?,:current_path
答案 0 :(得分:0)
NoMethodError
意味着,没有attachment#current_path
letter.template.present?
是letter.template.attachment.present?
,是letter.template.attachment.methods.respond_to?(:current_path)
点击letter.template.attachment
,了解letter.template.attachment.methods
可用的方法。
看起来CarrierWave也会覆盖try
- send_letter
的跟踪是什么样的?