Проверка определена в AppSetting
, поэтому она добавит ошибки в экземпляр класса.Попробуйте это на консоли rails:
s = AppSetting.new(id_monitoring_system: 'foo')
s.valid?
=> false
s.errors.full_messages # should output something like
=> ['id_monitoring_system must be an integer'
В зависимости от того, как вы определили связь между Event
и AppSetting
в классе Event
, это может вызвать ошибку проверки.Я ожидаю, что ассоциация будет определена так:
class Event < ActiveRecord::Base
has_one :app_setting, required: true
Таким образом, при выполнении:
@event.build_app_setting(id_monitoring_system: 'foo')
@event.save
Это приведет к тому, что AppSetting
не пройдёт проверку численности и, в свою очередь, Event
потерпит неудачу, потому что требуется ассоциация.Но ошибка, показанная в @event
, будет can't be blank
.Чтобы показать ошибку проверки AppSetting
, необходимо добавить ее к экземпляру ошибок родительского класса
if @event.save
render json: {status: 'created', message: 'Event save'}
else
@event.errors.add(:base, @event.app_setting.errors.full_messages)
render json: {status: false, errors: @event.errors.full_messages}
end