

Rails Tutorial の Chapter 6 ([日本語訳](http://railstutorial.jp/chapters/modeling-
users?version=4.0#sec-user_model)) を進めています。

コンソールを見るとユーザーが作成されているようなのですが、

`Couldn't find User with id=1`

とエラーを吐いてしまう理由をご教授頂きたいです。

* * *

user_controller.rb

[code]

    class UsersController < ApplicationController
    
      def show
    
        @user = User.find(params[:id])
    
      end
    
      def new
    
      end
    
    end
    
[/code]

* * *

user.rb

[code]

    class User < ActiveRecord::Base
    
      before_save { self.email = email.downcase }
    
      validates :name,  presence: true, length: { maximum: 50 }
      VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
      validates :email, presence: true, format: { with: VALID_EMAIL_REGEX },
                        uniqueness: { case_sensitive: false }
    
      has_secure_password
      validates :password, length: { minimum: 6 }
    
    end
    
[/code]

* * *

rails console --sandboxの結果

[code]

    2.0.0-p481 :007 > User.find(1)
      User Load (0.1ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 2]]
     => #<User id: 2, name: "testuesr", email: "test@example.com", created_at: "2015-01-01 13:28:14", updated_at: "2015-01-01 13:28:14", password_digest: "$2a$10$XHiVgRQlirrbx8oehDGii.Ko/Vi8NHaud920gniw6RFy..."> 
    
[/code]

* * *

user table

[code]

    class CreateUsers < ActiveRecord::Migration
      def change
        create_table :users do |t|
          t.string :name
          t.string :email
    
          t.timestamps
    
        end
    
      end
    
    end
    
[/code]

* * *

schema.rb

[code]

    ActiveRecord::Schema.define(version: 20150101022243) do
    
      create_table "users", force: true do |t|
        t.string   "name"
        t.string   "email"
        t.datetime "created_at"
        t.datetime "updated_at"
        t.string   "password_digest"
      end
    
      add_index "users", ["email"], name: "index_users_on_email", unique: true
    
    end
    
[/code]


CC BY-SA 3.0
2015-01-01T13:32:43.583
2910
2015-01-01T14:26:06.083
2015-01-01T14:02:45.997
4978
5969
question
ruby ruby-on-rails
Rails Tutorial の Chapter 6 で User が作成出来ない


登録されているUserのidが2になってしまっていますね。

[code]

    bundle exec rake db:migrate
    
[/code]

してDBの状態を初期状態に戻した後に、再度`irb`（あるいは`pry`など）で

[code]

    user = User.new(name: "Michael Hartl", email: "mhartl@example.com")
    user.save
    
[/code]

などとするのはどうでしょうか。


CC BY-SA 3.0
2015-01-01T14:08:31.333
2913
2015-01-01T14:08:31.333
3313
2910
answer


サンドボックスモードのコンソール上でユーザーを作成しているためと考えられます。

6.3.5 節にあるように、 `rails console` でコンソールを起動し、ユーザーを作成するとブラウザ上からも確認できるはずです。

`\--sandbox`
を付けてコンソールを起動すると、DBへの書き込みがすべてトランザクション内でおこなわれるので、コンソール外からは変更が見えません。またコンソールを終了した時点ですべての変更が取り消しになります。([関連ソースコード](https://github.com/rails/rails/blob/v4.2.0/activerecord/lib/active_record/railtie.rb#L58))


CC BY-SA 3.0
2015-01-01T14:26:06.083
2915
2015-01-01T14:26:06.083
30
2910
answer