我有一个用户注册表,想写一个人检测“验证码”到我的注册方法。我决定创建一个简单的数学问题供用户回答(这对我的目的应该有效)。
如何编写检查此字段值的验证?我在模型文件中编写了一个验证方法,如下所示:

def validate
  errors.add(:humanproof, "is not the right answer") if humanproof != 4
end

但是,由于:humanproof不是用户模型的一部分,“humanproof”变量在那里不可用。
访问防人因变量的最佳方式是什么?

最佳答案

您可以做的是添加一个虚拟属性。从Railscasts查看这个screencast
基本上你想给你的类添加一个属性。因为您不必对它执行任何逻辑,所以可以使用构建的ruby方法表单实例变量。

 class Foo < ActiveRecord::Base
   attr_accessor :humanproof

   def validate
     errors.add(:humanproof, "is not the right answer") if humanproof != 4
   end

这将向类中添加一个属性,该属性不会保存到数据库中,并在请求期间附加到对象。

关于ruby-on-rails - 如何在Ruby on Rails表单(例如验证码)中验证外部表单字段?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/684745/

10-08 23:14