ruby-on-rails - Rails - 无论我尝试什么,大写的电子邮件地址都会导致错误

标签 ruby-on-rails ruby email devise

我有一个相对简单的 Rails 应用程序,其中包含一个使用 Devise gem 的表单。该表格不需要用户名,但需要电子邮件地址。一切正常,当用户的电子邮件地址全部为小写时,该页面会将用户定向到下一页。但是,当用户输入字符串中包含大写字符的电子邮件地址时,我从 Rails 收到以下错误:

NoMethodError at /users
undefined method `uuid' for nil:NilClass

RegistrationsController#create
app/controllers/registrations_controller.rb, line 81

第 81 行(email: new_user.email,):

account         = Account.create(user: resource)
new_user        = User.find_by_email(params[:user][:email])
recurly_account = Recurly::Account.create(
        account_code: new_user.uuid,
        email:        new_user.email,
        first_name:   new_user.first_name,
        last_name:    new_user.last_name
)
sign_in new_user

请求参数:

{"utf8"=>"✓",
 "authenticity_token"=>"ySBGjHGNwiyeBqGh9nv0N5a8fIJO51bi1nIByev6a21Zh+ncMx5d99cTGKbKWpPvdYmGiBfLX9Gya0qmglrBWg==",
 "plan"=>"10day-fmf",
 "disc"=>"firstmonthfree10day",
 "user"=>{"first_name"=>"asdf", "last_name"=>"asdfsadf", "email"=>"Fjsdlkjs@FLFklsd.com", "password"=>"lsdkjlfkjlskjdf"},
 "commit"=>"TRY RISK FREE!",
 "controller"=>"registrations",
 "action"=>"create"}

--注意大写字母的邮箱地址

我对这个问题进行了广泛研究,发现它与电子邮件地址未正确小写有关。因此,根据我的研究,我将以下代码添加到各种文件中:

# Devise.rb
config.case_insensitive_keys = [:email]
# User.rb
def downcase_email
  self.email.downcase!
end

#registrations_controller.rb
def check_email
  email = params[:email].downcase
  check = User.where(email: email).first

  begin
    check_recurly = Recurly::Account.find(email)

    if check_recurly
      recurly_email = "taken"
    end
  rescue Recurly::Resource::NotFound => e
    recurly_email = "available"
  end

然而,尽管我尝试将用户输入的电子邮件地址小写,但大写字母仍然会导致错误!任何人都可以给我的任何帮助将不胜感激! 谢谢

最佳答案

尝试在此处添加.downcase:
new_user = User.find_by_email(params[:user][:email].downcase)

我假设您在数据库中存储了小写的电子邮件值,但在 params[:user][:email] 的 Controller 中您有“Fjsdlkjs@FLFklsd.com”。这就是为什么 User.find_by_email(params[:user][:email]) 返回 nil,而你不能在 nil 对象上调用 uuid 方法.

关于ruby-on-rails - Rails - 无论我尝试什么,大写的电子邮件地址都会导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41000735/

相关文章:

ruby-on-rails - 为什么我从 Flash 上传到 Rails 和 attachment_fu 不起作用(它与内容类型有关)?

ruby-on-rails - ruby rails : Calling class method from concern

ruby-on-rails - 如何按标题的第一个字母对 100 万条记录的列表进行排序

ruby-on-rails - 通过模拟测试两种不同的期望

php - List-Unsubscribe 电子邮件 header 无法取消订阅给定的 URL

sql - rails : Get SQL generated by delete_all

javascript - 如何在 ruby​​ on rails 中为复选框设置值?

Ruby 表单自动提交 Mechanize::ResponseCodeError

c# - GMAIL SMTP : A call to SSPI failed exception - The function requested is not supported

jquery - 如何在 jQuery 中验证纬度和经度以及电子邮件地址