【问题标题】:Connect validates_exclusion_of bad words to a separate file?将 validates_exclusion_of 坏词连接到单独的文件?
【发布时间】:2010-12-13 10:44:45
【问题描述】:

我正在构建一个长长的术语列表,我想防止使用validates_exclusion_of 进入某个字段。这个列表变得很长,其中的一些术语对于其他程序员来说可能是不合适的/冒犯性的/分散注意力的/拖延的。有没有办法将以下代码连接到我的仓库中某处保存的单独的纯文本文档?

validates_exclusion_of :path, :in => %w( long list of bad words ... ), :message => "This is a protected word. Please try another."

奖励:当用户输入这些术语之一时,此消息不会显示在我的表单上。如何让消息显示?

【问题讨论】:

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


    【解决方案1】:

    你不必使用 validates_exclusion_of 你可以定义你自己的验证

    validate :check_bad_words
    
    def check_bad_words
      @bad_words ||= File.read('badwords.txt').split
      errors.add_to_base("#{path} is a protected word. Please try another.") if @bad_words.include? path
    end
    

    为了让您的错误消息显示在表单上,​​在较旧的 Rails 中它是
    其中 f 是表单

    对于 rails 3.x,我认为您必须按照 f.error_messages in Rails 3.0 自己做

    【讨论】:

      【解决方案2】:

      要在表单中显示您需要的消息,例如(haml 示例)

      - if @object.errors.any?
        #error_explanation= error_messages_for :object
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-17
        • 2019-07-22
        • 2013-03-25
        • 1970-01-01
        • 2013-08-26
        • 1970-01-01
        • 2020-02-21
        • 2016-10-02
        相关资源
        最近更新 更多