0

所以我认为我已经接近在下面的方法中获得正确的语法,但我并不完全是这些。我总是对何时使用“自我”方法感到困惑。这是上下文:下面的方法旨在将保存到数据库的文件与当前网站上的文件进行比较。该方法本身是 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>'

编辑:答案如下。

4

1 回答 1

0

你们都问了正确的问题。他们让我思考。我对原始方法进行了两次更改,现在它可以工作了。我需要保存我下载的文件(下面的第 2 行),我忘记将我的“不匹配”状态用引号括起来。谢谢你的帮助!

def compare
  live_file = download_robots_file
  self.save
  archive_file = self.versions.last.changeset[:robots_file]
  if live_file != archive_file
    return "mismatch"
  end 
end
于 2012-07-26T10:58:31.397 回答