PAGINATE抛出错误自定义验证

PAGINATE抛出错误自定义验证

问题描述:

我试图用Rails 2.3.5创建我的车型之一自定义验证,但我一直recieving以下错误每次我跑我的测试套件:PAGINATE抛出错误自定义验证

`method_missing_without_paginate': undefined local variable or method `validates_progression' 

应用程序/模型/ project.rb似乎

class Project < ActiveRecord::Base 
    ... 
    validates_progression 

    def validates_progression 
     true # stubtastic! 
    end 
end 

我不能做太多的这种〜

它不工作,因为要定义实例范围内的方法和你想叫它中类范围。你有两个选择:

实例范围内

class Project < ActiveRecord::Base 

    validate :validates_progression 

    def validates_progression 
    true # stub 
    end 

end 

类范围

class Project < ActiveRecord::Base 

    def self.validates_progression 
    true # stub 
    end 

    # Be sure to define this method before calling it 
    validates_progression 

end 

第二种方案并没有真正有意义,除非你想换一个其他的过滤器。

class Project < ActiveRecord::Base 

    def self.validates_progression 
    validates_presence_of :progression 
    validates_length_of ... 
    end 

    # Be sure to define this method before calling it 
    validates_progression 

end 

否则,请使用第一个解决方案。

分页参考是一个红色的鲱鱼。线索是'没有'。该分页宝石将现有的method_missing方法重名并将其称为method_missing_without_pagination。所以,这个问题是一个标准的缺失方法错误。

该方法缺失,因为它是a)当你调用它时没有定义,b)没有在正确的范围内(你试图在类的范围内调用一个实例方法)。

validate :validates_progression 

def validates_progression 
    true 
end 

您可以通过使用validate与您的验证方法的符号添加自定义的验证