我想创建一个辅助方法来自动输出带有:maxlength属性的text_fields。我希望根据字段属性validates_length验证中指定的:max设置此maxlegth,以便保持DRY。
我的问题是:是否有一种很好的方法来检查对象属性上存在的验证,然后从该验证中提取最大长度。
我还计划从validates_format中提取其他内容,例如正则表达式,这样我就可以在text_field上设置一个属性,然后js可以使用该属性来运行客户端验证。
感谢。
奖励积分:为什么没有Rails自动为我们添加maxlength到文本字段?
答案 0 :(得分:9)
在Rails 3中,您可以调用对象上的_validators
方法来获取将运行的验证器列表:
t = Ticket.new
t._validators
答案 1 :(得分:2)
好吧,我不知道这是不是'好'的方式,但你可以初始化一个新对象,调用#valid?在它上面然后调用#errors来获取属性和错误消息的哈希值。然后你必须解析那些错误信息。
user = User.new
user.valid?
errors_hash = user.errors