活动模型验证rails 3

时间:2012-11-24 14:08:53

标签: ruby-on-rails-3 activemodel

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

首先我说的是我可以使用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 个答案:

答案 0 :(得分: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方法进行自定义验证,然后如果您觉得自己需要它,则使用{完整验证类{1}}。