Rails ActiveRecord, похоже, проигнорировал ошибку модели

У меня есть следующие модели и ассоциации:

Статус has_many :transactions, external_key: :transtatusid

Транзакция принадлежит_кому:статус, внешний_ключ::transstatusid

У меня была запись транзакции t1 и запись состояния s3. Я хотел сделать следующее:

 t1.transtatusid = s3.id
 t1.save

ОДНАКО вместо этого я сделал это по ошибке

 t1.transtatusid = s3
 t1.save

Дело в том, что Rails НЕ ЖАЛУЛСЯ. Он просто проигнорировал выделение.

Должен ли он был жаловаться? Если нет, то почему?

Я использую Rails3.2.1 и Ruby 1.9.3 с MySQL.


person nexar    schedule 11.05.2012    source источник


Ответы (1)


Насколько мне известно, Rails будет игнорировать ошибки при сохранении и продолжит работу со старым состоянием объекта. Если вы хотите создать исключение, вы должны использовать save! вместо. Впоследствии вы можете спастись от выброшенной ошибки с помощью сообщения об ошибке, флэш-сообщения или подобного.

person Michael Ef    schedule 18.12.2012