我尝试创建一个简单的Rails项目。我有这个错误:NoMethodError:nil的未定义方法`delete':NilClass
我只是创建一个包含我手动输入的电影的数据库。
我迁移了以下内容:
class CreateMovies < ActiveRecord::Migration
def change
create_table :movies do |t|
t.string :title
t.string :rating
t.decimal :total_gross
t.date :release_date
t.timestamps
end
end
end
我将数据添加到我的数据库中。我将一个对象实例化为一个变量。我正在尝试删除我在数据库中的特定电影。我试图使用destroy和delete方法,但错误显示。
2.0.0-p247 :025 > puss_boots = Movie.find_by(title: 'Puss and boots')
Movie Load (0.2ms) SELECT "movies".* FROM "movies" WHERE "movies"."title" = 'Puss and boots' LIMIT 1
=> nil
2.0.0-p247 :026 > puss_boots.destroy
NoMethodError: undefined method `destroy' for nil:NilClass
from (irb):26
from /Users/jona/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'
from /Users/jona/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'
from /Users/jona/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
2.0.0-p247 :027 > puss_boots.delete
NoMethodError: undefined method `delete' for nil:NilClass
from (irb):27
from /Users/jona/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands/console.rb:90:in `start'
from /Users/jona/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `start'
from /Users/jona/.rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands.rb:64:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
答案 0 :(得分:2)
您收到该错误,因为该查询没有返回任何记录:
Movie.find_by(title: 'Puss and boots')
您想在调用destroy之前确认您的记录已加载。
还要记下通话之间的控制台输出。第一个电话:
puss_boots = Movie.find_by(title: 'Puss and boots')
在您的Movie表上进行SELECT
查询并返回nil,这意味着没有找到该查询的记录。