我的 Writer 类上有一个使用定义的实例方法?运算符检查是否定义了posted_posts:
def performance_score
logger.debug posted_posts
logger.debug defined?(posted_posts)
unless defined?(posted_posts)
...
else
...
end
end
在我的控制器中,我有一个 writers 实例,定义如下:
@writers = Writer.select("writers.*, p.total_posts, p.posted_posts").joins(...)
当我调用@writers.performance_score 时,从第一个logger.debug 行它说我有4 个posted_posts,但第二个打印出nil。此外,它进入了除非部分而不是其他部分。
为了测试这一点,我将posted_posts 存根为4。这从第一个logger.debug 行打印出4,第二个logger.debug 表示它被定义为一个方法。此外,它确实进入了 else。
你能帮我理解为什么这在我的 Rails 应用程序中失败了吗?