【问题标题】:Active Model Validations rails 3活动模型验证 rails 3
【发布时间】:2012-11-24 14:08:53
【问题描述】:

我有一个消息模型,我一直在寻找各种 gems/js 来进行客户端验证。然后我开始阅读有关 Active Model Validations 的内容,我对 Rails 很陌生,所以请原谅我没有完全理解文档。

首先我是否正确地说我可以使用 ActiveModel Validation 执行客户端验证并设置我自己的自定义错误消息

我的消息模型位于顶部

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

所以这是说我可以在客户端添加自己的自定义错误消息?

我目前的问题是弄清楚它要做什么,我将这些类和方法放在哪里等等。如果有人能指出我正确的方向,我将不胜感激,我真的很想学习

谢谢

【问题讨论】:

    标签: ruby-on-rails-3 activemodel


    【解决方案1】:

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

    如果您在开始时遇到问题,我建议您在模型中执行一次简单的验证,并在尝试将其移动到客户端之前验证它是否有效。例如,在您的 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 的完整验证类。

    【讨论】:

    • 啊,很公平,那我在某个地方解释错了,谢谢你澄清了,客户端都是基于javascript的,我认为某处可能有一些rails魔法内置大声笑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多