2012-05-05 70 views
0

我有一個使用多個Custom ActiveModel驗證程序的模型。在安裝rails_admin時,出現以下錯誤rails_admin,mongoid和自定義ActiveModel驗證程序的問題

.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 

+0

大概從發佈你的一些代碼開始吧? –

+0

我通過添加'屬性'方法暫時解決了這個問題,該方法在我的驗證器中返回一個空數組。 – nvn

回答