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
与您的验证方法的符号添加自定义的验证