定義済みを使用するWriterクラスのインスタンスメソッドがありますか?演算子を使用して、posted_postsが定義されているかどうかを確認します。
def performance_score
logger.debug posted_posts
logger.debug defined?(posted_posts)
unless defined?(posted_posts)
...
else
...
end
end
私のコントローラーには、次のように定義されたライターインスタンスがあります。
@writers = Writer.select("writers.*, p.total_posts, p.posted_posts").joins(...)
@ writers.performance_scoreを呼び出すと、最初のlogger.debug行から4つのposted_postsがあると表示されますが、2番目の行はnilを出力します。さらに、elseではなくunlessセクションに入ります。
これをテストするために、posted_postsを4にスタブアウトします。これにより、最初のlogger.debug行から4が出力され、2番目のlogger.debugはメソッドとして定義されていることを示します。さらに、それは他に行きます。
Railsアプリケーションでこれが失敗する理由を理解するのを手伝ってもらえますか?