0

エラーと一緒にいくつかのデータを送信しようとしています。レスポンダーのどこかにあると推測していますが、どこから始めればよいかわかりません。要するにやりたい

model.errors.add :some_attr, "error message"
model.also_send_attrs = { prop: "some data also sent" }

構造を通常どおりにします(いくつかの追加があります)

{ 
  errors: { some_attr: ['error message'] },
  also_send_data: { prop: "some data also sent" }
}

エラーが発生した場合、エラーと一緒にデータを送信することは可能ですか?

4

1 に答える 1

0

うーん、Rails を拡張します。

# config/initializers/also_send_attrs.rb

module AlsoSendAttrs
  module ErrorsExtension
    extend ActiveSupport::Concern
    included do
      delegate :also_send_attrs, :to => :@base
    end
  end

  module ActiveRecordExtension
    extend ActiveSupport::Concern
    included do
      attr_accessor :also_send_attrs
    end
  end

  ActiveModel::Errors.send(:include, ErrorsExtension)
  ActiveSupport.on_load :active_record do
    include ActiveRecordExtension
  end
end

これは基本的なアプローチです。

各モデルにはアクセサー :also_send_attrs があり、各エラーにはこのアクセサーへのアクセスがあります。より多くの機能については、コードを拡張してください。

于 2012-12-12T22:05:21.913 に答える