Ruby on rails Rails-验证控制器中的电子邮件列表
我正在尝试创建一个表单,用户可以在其中输入电子邮件列表,使用Desive Invitable发送邀请 这是我的控制器,可处理有效电子邮件:Ruby on rails Rails-验证控制器中的电子邮件列表,ruby-on-rails,devise,ruby-on-rails-3,Ruby On Rails,Devise,Ruby On Rails 3,我正在尝试创建一个表单,用户可以在其中输入电子邮件列表,使用Desive Invitable发送邀请 这是我的控制器,可处理有效电子邮件: def create params[:user][:email].split(/, ?/).each do |email| params[resource_name][:email] = email self.resource = resource_class.invite!(params[resource_name].merge(:i
def create
params[:user][:email].split(/, ?/).each do |email|
params[resource_name][:email] = email
self.resource = resource_class.invite!(params[resource_name].merge(:invited_by => current_user.instance_id))
end
respond_to do |format|
if resource.errors.empty?
format.js { render :template => 'devise/invitations/create' }
else
format.js { render 'devise/invitations/errors', :notice => resource.errors }
end
end
end
我的最终目标是浏览所有电子邮件。请执行以下操作:
谢谢这是我几个月前写的一段代码,用于验证电子邮件列表(以逗号分隔),过滤电子邮件列表,并将无效电子邮件与有效电子邮件分开。此代码使用rspec进行测试
def parse_emails(emails)
valid_emails, invalid_emails = [], []
unless emails.nil?
emails.split(/,|\n/).each do |full_email|
unless full_email.blank?
if full_email.index(/\<.+\>/)
email = full_email.match(/\<.*\>/)[0].gsub(/[\<\>]/, "").strip
else
email = full_email.strip
end
email = email.delete("<").delete(">")
email_address = ValidatesEmailVeracityOf::EmailAddress.new(email)
if email_address.pattern_is_valid?
valid_emails << email
else
invalid_emails << email
end
end
end
end
return valid_emails, invalid_emails
end
很不错的。“模式有效”部分做什么?不熟悉这一点,在文档中也看不到这一点。那么,为什么要在模型中添加“validates\u email\u veracity\u of”呢?我之所以将其添加到模型中,是因为我让同一个模型检查来自单独表单的单个电子邮件地址。在您的情况下,这可能是可选的。模式是否有效?根据已知模式验证电子邮件地址的格式是否正确。请注意,它不会验证所有RFC 2822有效地址。def模式是否有效?address=~/\A([^@\s]+)@((?:[-A-z0-9]+\)+[A-z]{2,})\z/i end-如果模式是插件中的有效方法,则这是一个实现,您可以看到该方法只是一个正则表达式,电子邮件地址将根据它进行验证。
validates_email_veracity_of :email_address, :domain_check => false,
:message => 'is invalid for one of your invitations. Please review what you have entered.',
:timeout => 1 # => Time in seconds.