如何在电子邮件重复时选择elsif

时间:2014-06-12 19:02:58

标签: ruby-on-rails ruby ruby-on-rails-4

我遇到的问题是,当电子邮件是重复的时候,它应该通过javascript自己定制弹出窗口。我使用@emailexists来做到这一点,但我在其他问题上遇到的问题我不知道如何指出它实际上是重复的问题,这就是使用elsif而不是使用elsif的原因其他。任何帮助将不胜感激!

def create
  @ambassador = Ambassador.new(ambassador_params)
  if @ambassador.save
    puts "========================"
    puts "Successful Save"
    puts "========================"
    # redirect_to root_url, notice: 'Thank you for signing up!'
  elsif @ambassador.errors
    @emailexists = @ambassador.errors.full_messages
  else
    @errors = @ambassador.errors.full_messages
  end
end

1 个答案:

答案 0 :(得分:1)

在这里使用相同的电子邮件显式检查现有帐户可能更为直接,而不是允许错误并尝试从错误中检测特定的错误情况。

def create
  @ambassador = Ambassador.find_by_email(ambassador_params[:email].downcase)
  if @ambassador
    @emailexists = true
  else
    @ambassador = Ambassador.new(ambassador_params)
    if @ambassador.save
      puts "========================"
      puts "Successful Save"
      puts "========================"
      # redirect_to root_url, notice: 'Thank you for signing up!'
    else
      @errors = @ambassador.errors.full_messages
    end
  end
end

请注意,您还需要确保大使模型在保存之前降低电子邮件地址,以简化后续存在检查。

class Ambassador < ActiveRecord::Base
  attr_accessible :email

  # Not all database adapters use case-sensitive indices,
  # so this helps ensure uniqueness no matter what.
  before_save { email.downcase! }
end