У меня есть модель, которая требует доступа к внешнему веб-сайту, прежде чем можно будет создать экземпляр модели.Что считается лучшей практикой для устранения ошибок?Обратите внимание, что поскольку я не создал модель, я использую метод класса в модели.
Исправление ошибки в модели (а не в контроллере) кажется правильным, но тогда каков наилучший способ передатьошибка в контроллере?Проблема со следующим кодом состоит в том, что модель возвращает nil, поэтому контроллер не может предложить пользователю подсказки о том, что не удалось:
class MyModel < ActiveRecord::Base
def self.lookup(address)
begin
return web_lookup(address)
rescue SocketError
return nil
end
end
end
class MyModelsController < ApplicationController
def create
info = MyModel.lookup(params[:address])
if info
MyModel.create(:info => info)
else
flash_message('cannot lookup info') # I'd like to tell the user what failed here
end
end
end
Как бы вы подошли к этому?
(PS: я мог бы вызвать MyModel.new (: info => info) в коде моей модели и вернуть его в код контроллера. Это позволило бы мне назначить ошибку экземпляру модели [верно?], Но я не уверенэто часть публичного API. Будет ли это работать, и если да, то как бы вы это написали?)