【问题标题】:Rails 4 - Validate Elements in ArrayRails 4 - 验证数组中的元素
【发布时间】:2015-07-25 00:44:40
【问题描述】:

我的一个模型包含一个名为things 的虚拟属性。该属性是一个数组,我希望该数组中的每个元素都根据一组规则进行验证。这是我目前的验证尝试:

validates :things, presence: true,  length: { minimum: 2, maximum: 255 }

此代码的问题在于它验证整个数组本身,而不是数组中的每个单独元素。我知道我可以编写一个自定义验证器,但是有没有办法使用现有的验证选项对数组中的每个元素运行这些验证?我发现的其他主题是针对旧版本的 Rails,所以我不确定 Rails 4 是否有新的东西可以帮助解决这个问题。

提前感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails arrays validation ruby-on-rails-4 model


    【解决方案1】:

    您是否尝试过自定义验证?您可以在模型中创建自定义验证。

    类似这样,其中“things”是您要验证的属性的名称:

    model.rb

    validate :check_each_thing
    
    def check_each_thing
      things.each do |thing|
        if thing.present?
          if thing.size < 2 || thing.size > 255
            errors.add(:things, 'It should be longer than 2 and shorter than 255.')
          end
        else
          errors.add(:things, 'It should be present.')
        end
      end
    end
    

    希望对你有帮助:)

    【讨论】:

    • 嗨黛米,谢谢你的回答!正如我在问题中提到的,我知道我可以编写一个自定义验证器,但我想看看是否有另一种方法来完成这个。看来这是我唯一的选择。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多