У меня проблема с пониманием обратного вызова after_save rails. Вот фрагмент моей модели:
after_save :log_creation
private
def log_creation
logger.info "RECEIVED => #{ self.name } - #{ self.value } - #{ self.id }"
path_to_url = url_for({ :host => "localhost:8080", :action=>"show", :controller=>"testing", :format =>"pdf", :id => self })
logger.info path_to_url
file = open(path_to_url, "r").read
logger.info file
end
В журнале разработки я получаю ожидаемую информацию для первых двух logger.info. Третий я не понимаю, потому что получаю исключение 404 (ActiveRecord::RecordNotFound).
Итак, что я делаю неправильно?
Генерация PDF работает нормально (с использованием PDFkit), если я прокомментирую строку after_save и попытаюсь получить доступ к URL-адресу, все в порядке, но когда я попытаюсь получить к нему доступ через after_save, он не работает, как я ожидал.
Все это для отправки электронного письма (через почтовую программу) с прикрепленным к нему PDF-файлом. Он загрузил бы PDF (через контролируемый), а затем отправил бы его.
path_to_url
в вашем журнале? может быть просто проблема относительного адреса. Я думаю, что File.open работает в контексте вашей локальной файловой системы, поэтому, если ваш путь начинается с /, вы на самом деле пытаетесь найти файл из корня файловой системы. Завершающая косая черта также может сбивать с толку. - person m_x   schedule 11.10.2011