Ruby on rails rails控制台——沙盒michael hartl';s rails教程第3版不确定这是如何工作的

Ruby on rails rails控制台——沙盒michael hartl';s rails教程第3版不确定这是如何工作的,ruby-on-rails,ruby,ruby-on-rails-4,railstutorial.org,Ruby On Rails,Ruby,Ruby On Rails 4,Railstutorial.org,我对Ruby on Rails的使用有一个问题: rails console --sandbox 所以在MichaelHartl的rails教程第3版中,我们使用了这个,我遇到了一个问题,有时我使用它,一切都很顺利,然后我出现了一个错误,实际上整个测试环境变得毫无用处,因为它不会响应我的命令 例如,我将键入: 2.1.1 :025 > user.first 或任何其他正在工作且应该工作的命令,并获取: NoMethodError:未定义的方法“first”# 来自/Users/andr

我对Ruby on Rails的使用有一个问题:

rails console --sandbox
所以在MichaelHartl的rails教程第3版中,我们使用了这个,我遇到了一个问题,有时我使用它,一切都很顺利,然后我出现了一个错误,实际上整个测试环境变得毫无用处,因为它不会响应我的命令

例如,我将键入:

2.1.1 :025 > user.first
或任何其他正在工作且应该工作的命令,并获取:

NoMethodError:未定义的方法“first”#
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activemodel-4.2.0.beta2/lib/active_model/attribute_methods.rb:435:in'method_missing'from(irb):25
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:110:in'start'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2gems/railties-4.2.0.beta2/lib/rails/commands/console.rb:9:in'start'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/railties-4.2.0.beta2/lib/rails/commands/commands\u tasks.rb:68:in'console'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/railties-4.2.0.beta2/lib/rails/commands/commands\u tasks.rb:39:in'run\u command!'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/railties-4.2.0.beta2/lib/rails/commands.rb:17:in`'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u-support/dependencies.rb:248:in'require'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u-support/dependencies.rb:248:in'block-in-require'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u-support/dependencies.rb:233:in'load\u-dependency'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u-support/dependencies.rb:248:in'require'
from/Users/andrewkim/workspace2/sample_app/bin/rails:8:in`'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u-support/dependencies.rb:242:in'load'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u support/dependencies.rb:242:in'block in load'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u-support/dependencies.rb:233:in'load\u-dependency'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/activesupport-4.2.0.beta2/lib/active\u-support/dependencies.rb:242:in'load'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/commands/rails.rb:6:in'call'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/command_wrapper.rb:38:in'call'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/application.rb:180:in'block in service'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/application.rb:153:in'fork'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/application.rb:153:in'serve'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/application.rb:128:in'block in run'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/application.rb:122:in`loop
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/application.rb:122:in'run'
来自/Users/andrewkim/.rvm/gems/ruby-2.1。1@railstutorial_rails_4.2.0.beta2/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in`'
来自/Users/andrewkim/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
来自/Users/andrewkim/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from-e:1:in`'2.1.1:026>
突然之间,我在终端中键入的任何内容都会出现这样的错误,我不知道如何在不退出“rails控制台--沙盒”的情况下返回。有办法吗

例如,我将键入:

2.1.1 :025 > user.first
或任何其他正在工作且应该工作的命令

这个命令不应该起作用,它也不起作用。出现错误是因为在教程中有一个用户实例,它表示表中的一行,例如

user = User.new(name: "Joe", email: "joe@yahoo.com")
没有名为
first()
的方法。相反,用户实例具有以下方法:

id()
name()
email()
created_at()
updated_at()
但是,类名(或模型名)可用于搜索表,例如

user1 = User.first.   #User is the name of the class/model
关于这一点:

我不知道该怎么回去

回去干什么?一切都没有改变。在此错误之前键入控制台的所有变量仍将存在。以下是rails控制台中的一个示例:

$ rails console --sandbox
Loading development environment in sandbox (Rails 4.0.8)
Any modifications you make will be rolled back on exit
2.0.0-p481 :001 > x = 10
 => 10 

2.0.0-p481 :002 > user = User.find_by(email: "example@railstutorial.org")
  User Load (4.0ms)  SELECT "users".* FROM "users" WHERE "users"."email" = 'example@railstutorial.org' LIMIT 1
 => #<User id: 2, name: "Example User", email: "example@railstutorial.org", created_at: "2014-10-02 01:39:04", updated_at: "2014-10-02 01:39:04", password_digest: "$2a$10$VNzivk5opu1AC5DOM467dO2JaTg3c3JC9OAXR0AqvEi0..."> 

2.0.0-p481 :003 > user.first
NoMethodError: undefined method `first' for #<User:0x00000100f360c8>
    from /Users/7stud/.rvm/gems/ruby-2.0.0-p481@sample_app2_gems/gems/activemodel-4.0.8/lib/active_model/attribute_methods.rb:439:in `method_missing'
    from /Users/7stud/.rvm/gems/ruby-2.0.0-p481@sample_app2_gems/gems/activerecord-4.0.8/lib/active_record/attribute_methods.rb:168:in `method_missing'
    from (irb):3
    from /Users/7stud/.rvm/gems/ruby-2.0.0-p481@sample_app2_gems/gems/railties-4.0.8/lib/rails/commands/console.rb:90:in `start'
    from /Users/7stud/.rvm/gems/ruby-2.0.0-p481@sample_app2_gems/gems/railties-4.0.8/lib/rails/commands/console.rb:9:in `start'
    from /Users/7stud/.rvm/gems/ruby-2.0.0-p481@sample_app2_gems/gems/railties-4.0.8/lib/rails/commands.rb:62:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

2.0.0-p481 :004 > user
 => #<User id: 2, name: "Example User", email: "example@railstutorial.org", created_at: "2014-10-02 01:39:04", updated_at: "2014-10-02 01:39:04", password_digest: "$2a$10$VNzivk5opu1AC5DOM467dO2JaTg3c3JC9OAXR0AqvEi0..."> 

2.0.0-p481 :005 > x
 => 10 

2.0.0-p481 :006 > 
然后比较它们。也可以通过从不创建与模型同名的变量来缓解您的问题,例如,不编写:

user = User.new(...)
写:

my_user = User.new(...)
那么如果你写:

user.first
您将得到以下错误:

NameError: undefined local variable or method `user' for main:Object
这应该更容易调试

例如,我将键入:

2.1.1 :025 > user.first
或任何其他正在工作且应该工作的命令

这个命令不应该起作用,它也不起作用。出现错误是因为在教程中有一个用户实例,它表示表中的一行,例如

user = User.new(name: "Joe", email: "joe@yahoo.com")
没有名为
first()
的方法。相反,用户实例具有以下方法:

id()
name()
email()
created_at()
updated_at()
但是,类名(或模型名)可用于搜索表,例如。