Ruby on Rails:验证用户在表单

时间:2017-02-09 21:35:14

标签: ruby-on-rails regex validation

在我的RoR应用程序中,我想阻止用户重复表单上文本区域中的特定单词。我有一个表单,允许用户输入要通过电子邮件发送的文本,我想阻止他们说出单词" var1"不止一次。这可能吗?

我尝试在我的模型中使用以下验证,但这不起作用:

class Email < ActiveRecord::Base
    belongs_to :account
    has_many :recipients
    has_many :contacts, through: :recipients, :dependent => :destroy
    has_many :groups, through: :recipients, :dependent => :destroy

    validate :singular_var1

    private
    def singular_var1
        if message.scan(/"var1"/).length > 1
            errors.add :message, 'You must not repeat the word VAR1'
        end
    end
end

1 个答案:

答案 0 :(得分:1)

由于您使用的是正则表达式,因此只需删除引号:

...

if message.downcase.scan(/var1/).length > 1
  errors.add :message, 'You must not repeat the word VAR1'
end

...

但是,请记住您当前使用它的方式,它只会捕获小写的“var1”,而不是大小写或大写。如果您希望它捕获任何套管变化,请改为:

require