rails_admin,mongoid和自定义ActiveModel验证器的问题

时间:2012-05-05 18:04:40

标签: ruby-on-rails mongoid rails-admin

我有一个模型,它使用了许多Custom ActiveModel Validators。安装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'方法可以解决问题。

1 个答案:

答案 0 :(得分:0)

那是我的错。 现在通过以下方式修复了最新的主人:

https://github.com/sferik/rails_admin/commit/1bc66862d41e048f5ae9b8ae0b639f2f58015a2a

感谢您使用RailsAdmin!