Ruby on rails 创建关联时获取错误

Ruby on rails 创建关联时获取错误,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在我的app\u设置中进行了此验证model: class AppSetting < ActiveRecord::Base belongs_to :event validates :id_monitoring_system, numericality: { only_integer: true }, allow_blank: true end 我想通过id\u monitoring\u system属性获取app\u设置验证错误,并在我的视图中显

我在我的
app\u设置中进行了此验证
model:

    class AppSetting < ActiveRecord::Base
      belongs_to :event
      validates :id_monitoring_system, numericality: { only_integer: true }, allow_blank: true
    end
我想通过
id\u monitoring\u system
属性获取
app\u设置
验证错误,并在我的视图中显示它们

当属性不是整数时,不会创建关联,也不会显示错误

我试过:

    begin
      unless params[:app_setting].nil?
        app_setting = JSON.parse(params[:app_setting])
        @event.create_app_setting!(app_setting)
      end
    rescue ActiveRecord::RecordInvalid => e
      errors.add(:base, 'id_monitoring_system is integer')
    end

但是这不起作用,我如何解决它呢?

验证是在
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
类中定义
Event
AppSetting
之间关联的方式,可能会触发验证错误。我希望协会的定义如下:

class Event < ActiveRecord::Base
  has_one :app_setting, required: true
它将导致
AppSetting
无法通过数值性验证,反过来
事件
将无法通过,从而导致需要关联。但是
@event
中显示的错误将是
不能为空
。要显示
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
@event.build_app_setting(id_monitoring_system: 'foo')
@event.save
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