Общий порядок использования!в конце метода в rails указывает, что функция может вызвать исключение, в отличие от метода non-bang, просто возвращающего значение.
Следствие отказа от выдачи исключения позволяет использовать возвращаемое значение как частьнормальная обработка.
if obj.save
# yay, it worked!
else
# boo
end
Обратите внимание, что это не правило, применяемое Ruby, а просто соглашение.Другие библиотеки, такие как стандартная библиотека для String, имеют методы, которые возвращают результат операции вместо изменения значения объекта на месте.
String s="Hello, world"
s.gsub("world", "Joe") # returns a new string object, leaving s alone
s.gsub!("world", "Joe") # modifies the value of s