0
Rails(4.2.7)アクティブレコードモデルのスコープ機能に問題があります。平均スコープ付き関数は、クエリに結果があるときにリレーションを生成するのはなぜですか?
は、私は以下のスコープ機能も同一のクラスメソッドを平均ムービーのサイズを計算し、することを定義している:クエリは、いくつかのレコードを照合する場合
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 []>
なぜこのような現象が発生するのですか?
しかし、Railsの公式ガイドには、「これはクラスメソッドを定義するのとまったく同じです。あなたが使用するのは個人的な好みの問題です。」http://guides.rubyonrails.org/active_record_querying.html#scopes –