スコープといくつかの条件を使用してクエリを実行しています。私は(私は今scope.allを呼んだ時点で)、クエリに計算列を追加したいActiveRecordクエリに計算カラムを追加する
conditions[:offset] = (options[:page].to_i - 1) * PAGE_SIZE unless options[:page].blank?
conditions[:limit] = options[:limit] ||= PAGE_SIZE
scope = Promo.enabled.active
results = scope.all conditions
:このような何か。このような何か:
(ACOS(少なくとも(1、COS(0.71106459055501)* COS(-1.2915436464758)* COS(RADIANS(addresses.lat))* COS(RADIANS(addresses.lng))+ COS(0.71106459055501 )* SIN(RADIANS(addresses.lat))))* 3963.19)as accurate_distance(SIN(-1.2915436464758)* COS(RADIANS(addresses.lat))* SIN(RADIANS(addresses.lng))+ SIN
find_by_sqlを使用して既存のクエリ全体を書き直すことなく、これを行う方法はありますか?
ありがとうございます!新しい
conditions = Hash.new
conditions[:select] = "#{Promo.quoted_table_name}.*, (ACOS(...)) AS accurate_distance")
conditions[:offset] = (options[:page].to_i - 1) * PAGE_SIZE unless options[:page].blank?
conditions[:limit] = options[:limit] ||= PAGE_SIZE
scope = Promo.enabled.active
results = scope.all conditions
注: - 返して欲しい何列のActiveRecordを伝え選択
この計算量をステートメントのSELECT部分に追加するか、条件の一部として追加しますか?また、データベースは何ですか? – bradheintz
selectステートメントの一部として – rmw