0

いくつかのカスタムActiveModelバリデーターを使用するモデルがあります。rails_adminのインストール中に、次のエラーが発生します

.rvm/gems/ruby-1.9.2-head/bundler/gems/rails_admin-0d80b74a60e7/lib/rails_admin/adapters/mongoid.rb:340:in `block in length_validation_lookup': undefined method `attributes' for #<MyCustomValidator:0x00000105c5aca0 @options={}> (NoMethodError)
    from .rvm/gems/ruby-1.9.2-head/bundler/gems/rails_admin-0d80b74a60e7/lib/rails_admin/adapters/mongoid.rb:339:in `select'
    from .rvm/gems/ruby-1.9.2-head/bundler/gems/rails_admin-0d80b74a60e7/lib/rails_admin/adapters/mongoid.rb:339:in `length_validation_lookup'
    from .rvm/gems/ruby-1.9.2-head/bundler/gems/rails_admin-0d80b74a60e7/lib/rails_admin/adapters/mongoid.rb:98:in `block in properties'

モデルでバリデーター呼び出しをコメントアウトすると、エラーはなくなります。(rails_adminコードベースをハッキングする以外に)問題の解決策があるかどうか疑問に思っていました。

以下はスケルトンコードです(関連する部分のみ)

class MyModel
   include Mongoid::Document
   ....
   validates_with MyValidator
end

class MyValidator <  ActiveModel::Validator
  def validate(record)
  end
end

コメントで述べたように、空の配列を返す'attributes'メソッドを追加すると問題が解決します。

4

1 に答える 1

0

それが私のせいでした。現在、最新のマスターで次のように修正されています。

https://github.com/sferik/rails_admin/commit/1bc66862d41e048f5ae9​​b8ae0b639f2f58015a2a

RailsAdminをご利用いただきありがとうございます。

于 2012-05-31T03:44:34.597 に答える