私はレールチュートリアルの途中で作業しています。test a valid user login.しかし、NoMethodError:未定義のメソッド` digest'を取得しています。私はすべてを見てきました。なぜこのエラーが出ているのかわかりません。私はチュートリアルのコードをコピー/ペーストすることに頼って、それがスペルミスではなく、入力時に紛失したものでないことを確認しました。NoMethodError:定義されていないメソッド `digest '
class User < ApplicationRecord
before_save { email.downcase! }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }
def User.digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end
end
と私の治具::
test_user:
name: Test User
email: [email protected]
password_digest: <%= User.digest('password') %>
と私のテスト:そう何かアドバイスが高く評価され
test "login with valid information" do
get login_path
post login_path, params: { session: { email: @user.email,
password: 'password' } }
assert_redirected_to @user
follow_redirect!
assert_template 'users/show'
assert_select "a[href=?]", login_path, count: 0
assert_select "a[href=?]", logout_path
assert_select "a[href=?]", user_path(@user)
end
私はかなり困惑
は、ここに私のユーザモデルです。
スタックトレース:あなたは
NoMethodError: undefined method `digest' for #<User:0x000000069b8c18>
を意味しましたか? /usr/local/rvm/gems/ruby-2.3.0/gems/activemodel-5.0.0.1/lib/active_model/attribute_methods.rb:433:in method_missing' from (irb):8 from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/commands/console.rb:65:in
からのダイジェスト 開始 '/ usr/local/rvm/gemsからの /ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/commands/console_helper.rb:9:in start' from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:78:in
コンソール ' /usr/local/rvm/gems/ruby-2.3.0/gems/からrailties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:run_command!' from /usr/local/rvm/gems/ruby-2.3.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in
の ' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/から依存関係.rb:293:require' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in
ブロックが必要です ' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in load_dependency' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in
から' from/home/ubuntu/workspace/bin/rails:9:<top (required)>' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in
ロード' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in block in load' from /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in
load_dependency ' /usr/local/rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:load' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/commands/rails.rb:6:in
で ' を/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7から呼び出します。 .2/lib/spring/command_wrapper.rb:38:call' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:191:in
中のブロック/usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/applicationからブロックします。 rb:161:fork' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:161:in
に ' /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:131:in block in run' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:125:in
'からループ ' /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application.rb:125:in run' from /usr/local/rvm/gems/ruby-2.3.0/gems/spring-1.7.2/lib/spring/application/boot.rb:19:in
' /usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:inからあなたはbcryptの宝石を持っていることを確認してください」
は、私は、コンソールでメソッドを呼び出すためにしようとしたときに前と同じエラーを取得し@rajeevmaash番レールコンソール – raj
でアクセスダイジェスト方法です。 –
スタックトレースを追加することができます – raj