NameError:未初始化的常量User :: VALID_EMAIL_REGEX

时间:2017-11-29 19:21:49

标签: ruby ruby-on-rails-5 railstutorial.org

背景 - 我正在使用rails版本5.1.2。我正在使用Cloud 9 IDE。我的问题与Michael Hartl的Ch 11 Rails教程有关。 问题详情 - 键入$ rails test:mailers:

错误: UserMailerTest#test_account_activation: NameError:未初始化的常量User :: VALID_EMAIL_REGEX     app / models / user.rb:6:.box { background-color: white; width: 860px; margin: 50px auto; /*background-color: black;*/ text-align: center; background-color: inherit; } body { background-color: #0caab6; text-align: center; margin-top: 50px; }'

bin / rails test test / mailers / user_mailer_test.rb:5

app / models / user.rb:1 - app / models / user.rb:6:

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="style.css">
  <meta charset="utf-8">
  <title>CARDS</title>
</head>

<body>
  <header>
    <h1>PLAY GAME</h1>
  </header>
  <div class="box">
  </div>
  <script src="app.js" charset="utf-8"></script>
</body>

</html>

2 个答案:

答案 0 :(得分:0)

您的用户模型中似乎缺少正则表达式

class User < ApplicationsRecord
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
 ...

end

答案 1 :(得分:0)

只需添加到Antarr Byrd's answer

在使用Rails应用程序时,我也有类似的经历。

问题是我在验证调用的下面定义了REGEX常量。

也就是说,代替这个

class User < ApplicationRecord 
  validates :email, presence: true, length: { maximum: 255 },
                            format: { with: VALID_EMAIL_REGEX }

  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
end

宁愿这样做

class User < ApplicationRecord
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

  validates :email, presence: true, length: { maximum: 255 },
                            format: { with: VALID_EMAIL_REGEX }

end

仅此而已。

我希望这会有所帮助