Rails, как обрабатывать ошибки и исключения в модели - PullRequest
3 голосов
/ 04 августа 2011

Итак, я анализирую данные из твиттер-API в рельсах, используя библиотеку твиттер, и иногда ответ от API может выглядеть так:

{
error: "Invalid parameter"
}

И модель вызовет исключение, прямо сейчас яя молча ловлю его и помещаю error.message в журнал, как передать это исключение контроллеру, чтобы я мог отобразить его в представлении?Благодарю.

ОБНОВЛЕНИЕ: ошибка, скорее всего, произойдет, потому что я разрешаю моему клиенту создавать запросы, и они могут ставить сложные запросы, например "https://search.twitter.com/search.json?since_id=1&&q=near:NYC%20within:15mi", которые поддерживаются веб-страницей Twitter, но не ее API.Поэтому я хочу уловить эти ошибки и отобразить флэш-сообщение, чтобы пользователь мог получить обратную связь.

Ответы [ 2 ]

4 голосов
/ 04 августа 2011

Полагаю, вы могли бы attr_accessor. Что-то вроде twitter_errors.

В вашей модели:

attr_accessor :twitter_errors

begin
  #your twitter code here
rescue
  self.twitter_errors = "whatever"
end

И в вашем контроллере установите вспышку, если @model.twitter_errors не пуст.

2 голосов
/ 04 августа 2011

Типичным способом является использование ActiveModel::Errors.

ActiveRecord широко использует этот миксин для валидации.Таким образом, в ActiveRecord объекте у вас есть доступ к errors.add(:base, TwitterError.to_s).Вы можете использовать это для установки ошибки при ее обнаружении.И тогда вы сможете получить к нему доступ через контроллер / просмотр, используя ar_object.errors.

(уже есть несколько помощников для отображения ошибок, подобных этой, в документации гораздо больше информации)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...