2

Ruby on Rails のチュートリアルに従っていますが、Rails コンソール (サンドボックス モード) でユーザーを保存しようとすると、次のエラーが発生します。

NameError: undefined local variable or method `user' for main:Object
from (irb):7

注: と入力しUser.new、名前と電子メールを入力してから を入力するとuser.save、上記のエラーが発生しました。

完全なコード:

C:\Sites\rails_projects\sample_app>bundle exec rake db:migrate
==  CreateUsers: migrating ====================================================
-- create_table(:users)
   -> 0.0020s
==  CreateUsers: migrated (0.0020s) ===========================================


C:\Sites\rails_projects\sample_app>rails console --sandbox
Loading development environment in sandbox (Rails 4.0.1)
Any modifications you make will be rolled back on exit
irb(main):001:0> User.new
=> #<User id: nil, name: nil, email: nil, created_at: nil, updated_at: nil>
<ame: "Andrew Ghobrial", email: "email@gmail.com")
=> #<User id: nil, name: "Andrew Ghobrial", email: "email@gmail.com",
created_at: nil, updated_at: nil>
irb(main):004:0> user.save
NameError: undefined local variable or method `user' for main:Object
        from (irb):4
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands/console.rb:90:in `start'
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands/console.rb:9:in `start'
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands.rb:62:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'
irb(main):006:0> user.save
NameError: undefined local variable or method `user' for main:Object
        from (irb):6
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands/console.rb:90:in `start'
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands/console.rb:9:in `start'
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands.rb:62:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'
irb(main):007:0> user
NameError: undefined local variable or method `user' for main:Object
        from (irb):7
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands/console.rb:90:in `start'
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands/console.rb:9:in `start'
        from C:/RailsInstaller/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems
/railties-4.0.1/lib/rails/commands.rb:62:in `<top (required)>'
        from bin/rails:4:in `require'
        from bin/rails:4:in `<main>'`
4

4 に答える 4

1

大文字化の回答は支持されていませんが、IRB の元の投稿の最初の行は、これが問題であることを証明しています。私のリソースは小文字のタイトルで作成されました:

rails g resource user

データベースの移行後:

IRB で「user.count」と入力すると NameError が返される

User.count」と入力すると、期待される結果が得られます (空のテーブルの場合):

    irb(main):009:0> User.count
   (0.4ms)  SELECT COUNT(*) FROM "user"
    => 0

そのため、IRB はアクティブなリソースで大文字と小文字を区別し、宣言では大文字にする必要があるようです。「User」と入力すると、フィールド/列名のリストが返されます。

于 2019-10-01T22:37:11.930 に答える
0

1.9.3-p392 :004 > status.delete_all

このステータスでは、's' を大文字で 'S' にする必要があります。

また

この場合

NameError: main:Object の未定義のローカル変数またはメソッド「user」

このステータスでは、'u' を大文字で 'U' にする必要があります。

また

この場合

NameError: main:Object の未定義のローカル変数またはメソッド「post」

このステータスでは、'p' を大文字で 'P' にする必要があります。

于 2015-04-04T04:49:59.323 に答える