Использование исключений Ruby on Rails - PullRequest
0 голосов
/ 07 июля 2019

При обнаружении неудачной проверки, недействительным? вернет false и выйдет. Если все проверки пройдены, недействительно? вернет true и код продолжится. Спасательный код запускается только если все проверки пройдены? Если да, то какие ошибки будут обнаружены? И наконец, почему нет начала?

    def save
      return false if invalid? # invalid? triggers validations
      true
      rescue ActiveRecord::StatementInvalid => e
      # Handle exception that caused the transaction to fail
      # e.message and e.cause.message can be helpful
      errors.add(:base, e.message)
      false
    end

1 Ответ

1 голос
/ 07 июля 2019

Код спасения работает только тогда, когда все проверки пройдены?Цитата

Нет, он будет запущен, если вызов invalid? сгенерирует исключение типа StatementInvalid

, какие возникшие ошибки он поймает?Цитата

вызов invalid? вот что вызывает ошибку

почему нет Begin?

в ruby, выможет удалить начало, если вы спасаете от любого исключения, которое вызывается из тела метода, так что

 def method 
  begin 
   #some code
   rescue
   #handle 
  end 
 end

равно

 def method 
   some code
   rescue  
   # handle 
 end

, но второй синтаксис короче и чище

Примечание: спасение от ActiveRecord::StatementInvalid внутри переопределения для сохранения

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