所以我认为我已经接近在下面的方法中获得正确的语法,但我并不完全是这些。我总是对何时使用“自我”方法感到困惑。这是上下文:下面的方法旨在将保存到数据库的文件与当前网站上的文件进行比较。该方法本身是 rails 应用程序中模型类的成员。
但是当我在控制台中运行代码时,它会卡在“自我”上。它不能在 nil 类上调用版本方法。我对“自我”有什么误解?我需要做什么才能使这种方法起作用?
def compare
live_file = download_file
archive_file = self.versions.last.changeset[:robots_file]
if live_file != archive_file
return mismatch
end
end
编辑:这是我在控制台中收到的错误消息。
NoMethodError: undefined method `versions' for nil:NilClass
from /Users/bendowney/sites/WatchApp/app/models/site.rb:14:in `compare'
from (irb):50
from /Users/bendowney/.rvm/gems/ruby-1.9.3-p194@WatchApp/gems/railties-3.2.5/lib/rails/commands/console.rb:47:in `start'
from /Users/bendowney/.rvm/gems/ruby-1.9.3-p194@WatchApp/gems/railties-3.2.5/lib/rails/commands/console.rb:8:in `start'
from /Users/bendowney/.rvm/gems/ruby-1.9.3-p194@WatchApp/gems/railties-3.2.5/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
编辑:答案如下。