ruby-on-rails - rails 3 验证字符串

标签 ruby-on-rails validation ruby-on-rails-3



有什么方法可以告诉 Rails 我的字符串可能不是“某物”?

我正在寻找类似的东西

validates :string, :not => 'something'

谢谢
团块

最佳答案

其中任何一个都可以完成工作(单击文档的方法):

  • 可能是最好和最快的方式,易于扩展为其他词:
    validates_exclusion_of :string, :in => %w[something]
    
  • 这有一个使用正则表达式的好处,所以你可以更容易地概括:
    validates_format_of :string, :without => /\A(something)\Z/
    

    您可以使用 /\A(something|somethingelse|somemore)\Z/ 扩展到其他词
  • 这是您可以实现任何验证的一般情况:
    validate :cant_be_something
    def cant_be_something
      errors.add(:string, "can't be something") if self.string == "something"
    end
    
  • 要准确获得您提出的语法( validates :string, :not => "something" ),您可以使用此代码(尽管警告,我在阅读 rails 源代码的 master 分支时发现了这一点,它应该可以工作,但在我的 ~ 3 个月内不起作用旧安装)。将此添加到您的路径中的某处:
    class NotValidator < ActiveModel::EachValidator
      def validate_each(record, attribute, value)
        record.errors[attribute] << "must not be #{options{:with}}" if value == options[:with]
      end
    end
    
  • 关于ruby-on-rails - rails 3 验证字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933403/

    相关文章:

    ruby-on-rails - 在 Rails 中从 SASS/SCSS 自动更新 CSS?

    javascript - 如何使用一个组件来验证其他两个组件?

    objective-c - 动态创建的文本字段验证

    ruby-on-rails - rails 关系

    ruby-on-rails - Spree示例应用程序问题

    ruby-on-rails - 在 Rails 中连接到 API 时将 JWT 存储在何处

    validation - React Native 输入组件仅接受数值

    ruby-on-rails - 本地人可以在 Rails View 中通过两层吗?

    ruby-on-rails - Ruby on Rails : Long list of migration files, 常见吗?

    ruby-on-rails - 我应该在 Rails 应用程序中索引哪些字段?