我在Rails(4.2.7)Active Record模型中遇到范围函数问题。
我已经在下面定义了范围函数来计算平均电影大小以及同一类方法:
scope :average_size, -> { average(:file_file_size) }
def self.average_size_test
average(:file_file_size)
end
当查询匹配某些记录时,范围和类方法按预期工作:
2.2.4 :037 > Video.average_size
=> #<BigDecimal:1d483b0,'0.1790511428 57143E6',18(36)>
2.2.4 :038 > Video.average_size_test
=> #<BigDecimal:4f278b8,'0.1790511428 57143E6',18(36)>
但是,当查询结果不匹配时,类方法和范围方法结果不同:
2.2.4 :040 > Video.where(language: 'ch').average_size_test
=> nil
2.2.4 :041 > Video.where(language: 'ch').average_size
=> #<ActiveRecord::Relation []>
为什么会发生这种行为?