我有一个用户注册表,并想在我的注册方法中写一个人检测“验证码”。我决定创建一个简单的数学问题供用户回答(这应该适用于我的目的)。
如何编写检查此字段值的验证?我在模型文件中写了一个validate方法,如下所示:
def validate
errors.add(:humanproof, "is not the right answer") if humanproof != 4
end
然而,因为:humanproof不是用户模型的一部分,因此“人防”变量不可用。
访问人性化变量的最佳方法是什么?
答案 0 :(得分:4)
您可以做的是添加虚拟属性。从RailsCasts中查看此screencast。
基本上你想为你的班级添加一个属性。因为您不必使用它执行任何逻辑,所以您可以使用构建的Ruby方法表单实例变量。
class Foo < ActiveRecord::Base
attr_accessor :humanproof
def validate
errors.add(:humanproof, "is not the right answer") if humanproof != 4
end
这会为您的类添加一个未保存到数据库的属性,并在请求期间附加到该对象。