したがって、以下のメソッドで正しい構文を取得するのに近づいていると思いますが、完全ではありません。「self」メソッドをいつ使用するかについて、私はいつも混乱します。コンテキストは次のとおりです。以下のメソッドは、データベースに保存されたファイルと現在 Web サイトにあるファイルを比較するためのものです。メソッド自体は、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>'
編集:答えは以下です。