2012-11-24 29 views
0

我有一个消息模型,我一直在寻找各种gems/js进行客户端验证。然后我开始阅读有关主动模型验证,我很新的轨道,所以请原谅我不完全理解文档。有效的模型验证rails 3

首先我在说,我可以加载ActiveModel验证执行客户端验证,并设置自己的自定义错误消息

我有我的消息模型的顶部

include ActiveModel::Validations 

延伸阅读有纠正确定

,我应该使用

validates_with MyValidator 

但是我得到错误信息

uninitialized constant Message::MyValidator 

,如果我把这个模型

我也看过但─

To cause a validation error, you must add to the record‘s errors directly from within the validators message 

class MyValidator < ActiveModel::Validator 
def validate(record) 
record.errors.add :base, "This is some custom error message" 
record.errors.add :first_name, "This is some complex validation" 
# etc... 
end 

所以这是说,我可以添加这不起作用我自己的客户端自定义错误消息?

我现在的问题是让我的脑袋围绕它要做的事情,我在哪里放这些类和方法等..如果任何人都可以指出我在正确的方向,我会很感激,我真的想学习

谢谢

回答

1

ActiveModel验证不提供客户端验证。如果您想在客户端使用您的Rails验证器,我会建议使用client_side_validations宝石。

如果您在入门时遇到困难,建议您在模型中执行一次简单的验证,并在尝试将其移动到客户端之前验证它是否有效。例如,在您Message类:

# app/models/message.rb 
class Message 
    include ActiveModel::Validations 
    attr_accessor :sender 
    validates :sender, presence: true 
end 

# in the console 
m = Message.new 

m.valid?    #=> false 
m.errors.full_messages #=> ["Sender can't be blank"] 

然后开始与其他类型的validates工作,如长度或格式,然后用validate方法自定义的验证,然后如果你终于觉得你需要它,一个完整的验证类使用validates_with

+0

ah不够公平,我在某处某处解释错了,谢谢你清理那个,客户端是所有基于javascript的,那么我认为可能有一些轨道魔法的地方有这个内置的哈哈。 – Richlewis