質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

1777閲覧

Ruby on Rails Tutorialでuser_specが実行されません。

yamady

総合スコア176

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2015/07/12 01:25

いつもお世話になっております。
Ruby on Rails Tutorial 8章でuser_specが
エラーとなってしまい、それ以降を実行することができません。

おそらく実行ページ先が見つかっていないのかと思いますが、
チュートリアル通りには従っているはずなので困っています。

どうかお助けくださいませ。

下記の続きとなります。
https://teratail.com/questions/12650

  1. User
    Failure/Error: it { should respond_to(:remember_token) }
    expected #<User id: nil, name: "Example User", email: "user@example.com", created_at: nil, updated_at: nil, password_digest: "$2a$04$PJzlVtwcWJvv179.p9.aJuc1c6gVqAI06IbG6zcu.PsC...", remeber_token: nil> to respond to :remember_token

    ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'

  2. User when email address is already taken

Failure/Error: user_with_same_email.save NoMethodError: undefined method `remember_token=' for #<User:0x007fb94551f300> # ./app/models/user.rb:23:in `create_remember_token' # ./spec/models/user_spec.rb:62:in `block (3 levels) in <top (required)>'
  1. User remember token remember_token
Failure/Error: before { @user.save } NoMethodError: undefined method `remember_token=' for #<User:0x007fb94312dfa0> # ./app/models/user.rb:23:in `create_remember_token' # ./spec/models/user_spec.rb:102:in `block (3 levels) in <top (required)>'
  1. User return value of authenticate method with valid password
Failure/Error: before { @user.save } NoMethodError: undefined method `remember_token=' for #<User:0x007fb943145a38> # ./app/models/user.rb:23:in `create_remember_token' # ./spec/models/user_spec.rb:86:in `block (3 levels) in <top (required)>'
  1. User return value of authenticate method with invalid password
Failure/Error: before { @user.save } NoMethodError: undefined method `remember_token=' for #<User:0x007fb946819b40> # ./app/models/user.rb:23:in `create_remember_token' # ./spec/models/user_spec.rb:86:in `block (3 levels) in <top (required)>'
  1. User return value of authenticate method with invalid password
Failure/Error: before { @user.save } NoMethodError: undefined method `remember_token=' for #<User:0x007fb945642390> # ./app/models/user.rb:23:in `create_remember_token' # ./spec/models/user_spec.rb:86:in `block (3 levels) in <top (required)>'

◼︎ user_spec.rb

lang

1require 'spec_helper' 2 3describe User do 4 5 before do 6 @user = User.new(name: "Example User", email: "user@example.com", 7 password: "foobar", password_confirmation: "foobar") 8 end 9 10 subject { @user } 11 12 it { should respond_to(:name) } 13 it { should respond_to(:email) } 14 it { should respond_to(:password_digest) } 15 it { should respond_to(:password) } 16 it { should respond_to(:password_confirmation) } 17 it { should respond_to(:remember_token) } 18 it { should respond_to(:authenticate) } 19 20 it { should be_valid } 21 22 describe "when name is not present" do 23 before { @user.name = " " } 24 it { should_not be_valid } 25 end 26 27 describe "when email is not present" do 28 before { @user.email = " " } 29 it { should_not be_valid } 30 end 31 32 describe "when name is too long" do 33 before { @user.name = "a" * 51 } 34 it { should_not be_valid } 35 end 36 37 describe "when email format is invalid" do 38 it "should be invalid" do 39 addresses = %w[user@foo,com user_at_foo.org example.user@foo. 40 foo@bar_baz.com foo@bar+baz.com] 41 addresses.each do |invalid_address| 42 @user.email = invalid_address 43 expect(@user).not_to be_valid 44 end 45 end 46 end 47 48 describe "when email format is valid" do 49 it "should be valid" do 50 addresses = %w[user@foo.COM A_US-ER@f.b.org frst.lst@foo.jp a+b@baz.cn] 51 addresses.each do |valid_address| 52 @user.email = valid_address 53 expect(@user).to be_valid 54 end 55 end 56 end 57 58 describe "when email address is already taken" do 59 before do 60 user_with_same_email = @user.dup 61 user_with_same_email.email = @user.email.upcase 62 user_with_same_email.save 63 end 64 65 it { should_not be_valid } 66 end 67 68 describe "when password is not present" do 69 before do 70 @user = User.new(name: "Example User", email: "user@example.com", password: " ", password_confirmation: " ") 71 end 72 it { should_not be_valid } 73 end 74 75 describe "when password doesn't match confirmation" do 76 before { @user.password_confirmation = "mismatch" } 77 it { should_not be_valid } 78 end 79 80 describe "with a password that's too short" do 81 before { @user.password = @user.password_confirmation = "a" * 5 } 82 it { should be_invalid } 83 end 84 85 describe "return value of authenticate method" do 86 before { @user.save } 87 let(:found_user) { User.find_by(email: @user.email) } 88 89 describe "with valid password" do 90 it { should eq found_user.authenticate(@user.password) } 91 end 92 93 describe "with invalid password" do 94 let(:user_for_invalid_password) { found_user.authenticate("invalid") } 95 96 it { should_not eq user_for_invalid_password } 97 specify { expect(user_for_invalid_password).to be_false } 98 end 99 end 100 101 describe "remember token" do 102 before { @user.save } 103 its(:remember_token) { should_not be_blank } 104 end 105end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

RAILS_ENV=testでrake db:migrateを実行したでしょうか?
remember_tokenカラムが無いときに出るエラーな気がします。

投稿2015/07/16 08:29

matsubokkuri

総合スコア744

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamady

2015/07/18 18:27

matsubokkuri様 ご回答頂きまして、ありがとうございます。 実行したのですが、remember_tokenカラムが出てないみたいです。 リトライしてみます。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問