Ruby on rails rails序列化数组验证
我需要验证电子邮件列表中的电子邮件保存。对于验证,我有EmailValidator。但我不知道如何在每对验证中使用它。还有其他方法进行验证吗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,
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 }