我是Ruby语言和Rails框架的新手。当我从“Head First Rails”书中看到这段代码时:
class ClientWorkout<的ActiveRecord ::基
validates_numericality_of:paid_amount
端
我的问题是:
1)从Ruby语言中,validates_numericality_of在何处以及如何实现?是否可用于ActiveRecord框架之外的Ruby类
2)validates_numericality_of对ClientWorkout类的实例做了什么?
感谢。
答案 0 :(得分:1)
1)validates_numericality_of是Rails框架中存在的许多验证之一,或者更精确的是ActiveRecord。所以它不是所有Ruby类都可访问的东西。您可以使用它来传递代表模型属性的ruby符号。您可以同时传递多个属性:
validates_numericality_of :age, :score
但是,如果您需要针对不同属性的不同设置,您还可以多次指定验证:
validates_numericality_of :age
validates_numericality_of :score, :allow_nil => true
2)一般的验证是在调用ClientWorkout.save()时保存到数据库之前验证模型是否“有效”。 validates_numericality_of就像名称暗示验证传递的属性是数字而不是字符串,数组,布尔等。
如果未满足任何验证,则记录将不会保存到数据库。这当然可以通过调用ClientWorkout.save(false)来绕过,它将告诉ActiveRecord在不验证记录的情况下进行保存。
答案 1 :(得分:0)
validates_numericality_of验证指定属性的值是否为数字。
Active Record是您的模型,每个模型对应于数据库中的表。因此,如果您在ClientWorkout类中使用validates_numericality_of,该类仅验证该类/模型中的paid_amount。