为什么平均范围函数在查询有任何结果时会产生关系?

时间:2016-08-15 07:24:57

标签: ruby-on-rails activerecord

我在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 []>

为什么会发生这种行为?

0 个答案:

没有答案