我正在尝试为Rails 2.3.5中的某个模型创建自定义验证,但每次运行我的测试套件时我都会收到以下错误:
`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
我似乎无法做到这一点〜
答案 0 :(得分:1)
它不起作用,因为您正在定义具有实例范围的方法,并且您尝试在类范围内调用它。您有两种选择:
实例范围
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
否则,请使用第一个解决方案。
答案 1 :(得分:1)
分页参考是红鲱鱼。线索是'没有'。将paginate gem设置为现有method_missing
方法的别名并将其命名为method_missing_without_pagination
。因此,问题是标准缺失方法错误。
该方法缺失,因为它是a)在你调用它时没有定义,b)没有在正确的范围内(你试图在类的范围内调用实例方法)。
您可以使用validate
添加自定义验证,并使用验证方法的符号:
validate :validates_progression
def validates_progression
true
end