Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails序列化数组验证_Ruby On Rails_Validation_Activerecord_Serialization_Activemodel - Fatal编程技术网

Ruby on rails rails序列化数组验证

Ruby on rails rails序列化数组验证,ruby-on-rails,validation,activerecord,serialization,activemodel,Ruby On Rails,Validation,Activerecord,Serialization,Activemodel,我需要验证电子邮件列表中的电子邮件保存。对于验证,我有EmailValidator。但我不知道如何在每对验证中使用它。还有其他方法进行验证吗 class A < ActiveRecord::Base serialize :email_list validates_each :email_list do |r, a, v| # what should it be here? # EmailValidator.new(options).validate_each r,

我需要验证电子邮件列表中的电子邮件保存。对于验证,我有EmailValidator。但我不知道如何在每对验证中使用它。还有其他方法进行验证吗

class A < ActiveRecord::Base
  serialize :email_list
  validates_each :email_list do |r, a, v|
    # what should it be here? 
    # EmailValidator.new(options).validate_each r, a, v
  end
end
class A
验证\u每个
用于验证多个属性。在您的情况下,您有一个属性,需要以自定义方式验证它

这样做:

class A < ActiveRecord::Base
   validate :all_emails_are_valid

   ...

   private
   def all_emails_are_valid
      unless self.email_list.nil?
         self.email_list.each do |email|
            if # email is valid -- however you want to do that
               errors.add(:email_list, "#{email} is not valid")
            end
         end
      end
   end
end
当然,您可以将
ArrayOfEmailsValidator
类放入,即
lib/array\u Of\u emails\u validator.rb
并将其加载到需要的地方。通过这种方式,您可以跨模型甚至项目共享验证器。

我的结论是:

您可以根据编写自己的
EmailValidator
,并使用
ArrayValidator
如:

validates :emails, array: { email: true }

:email_list是一个包含电子邮件的数组,您想确保每封电子邮件都是有效的吗?是的,没错。我需要验证每封电子邮件,如果有人无效,则添加错误@gwcofey提供的答案似乎就是这样。主要困难与“如果”条件有关。我不知道如何使用EmailValidator(我坚持使用if条件),它可以使用EmailValidator做什么?我添加了第二个自定义验证器的示例谢谢。但我仍然找不到使用EmailValidator的方法。因为它可能有复杂的逻辑,无法直接插入ArrayOfEmailsValidator。是否可以详细编写“如果”代码?
validates :emails, array: { email: true }