ruby-on-rails - 在 Rails 中调用自定义验证方法

标签 ruby-on-rails validation

我刚刚将 Rails 升级到 2.3.4,我在验证中注意到了这一点: 假设我有一个简单的模型公司,它有一个名字。没什么。 我想运行我自己的验证:

class Company < ActiveRecord::Base

  validate :something


  def something
    false
  end

end

在这种情况下保存模型实际上是有效的。 如果我重写 validate() 并返回 false,也会发生同样的事情。 我在一个更复杂的模型中注意到了这一点,其中我的验证返回 false,但该对象仍在保存......我在一个基本上空的模型中尝试了它并应用了相同的东西。我缺少什么新的做法吗?在我的一些旧的 Rails 代码中似乎并非如此。

最佳答案

当您使用validate方法时,就会执行验证。然而,rails 并不依赖于返回值。

它取决于是否存在验证错误。因此,当您的模型未验证时,您应该添加错误。

def something
    errors.add(:field, 'error message')
end

或者,如果错误与字段无关:

def something
    errors.add(:base, 'error message')
end

那么您的模型将不会被保存,因为存在错误。

关于ruby-on-rails - 在 Rails 中调用自定义验证方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611887/

相关文章:

ruby-on-rails - RESTful 应用程序中的 XSRF

mysql - 我应该在我的专用服务器中安装多个 mysql 服务器吗?

javascript - jQuery 部分无效字段在表单验证上滚动

python - 验证字符串输入并将其连接到列表

Javascript 验证帮助 - 输入必须等于 Blue 的值

javascript - 使用正则表达式我想保留一些特殊字符但删除另一个(竖线)

ruby-on-rails - 使用 Active Record 对关联表求和

mysql - Rails,多态关联 - 查找具有非死关联记录的记录

ruby-on-rails - 适用于 Ruby 和 Node.JS 的 2 路加密算法,仅加密字母和数字

php - 在数据库中使用 jQuery 验证表单.. 数字字段中断