ruby on rails - Incorrect Scope Syntax with SQL Query -
i'm trying limit query return results belong logged in user , within date range. scope:
scope :unpaid, ->(start_date, end_date, current_user) { joins('left outer join carrier_commissions on dealer_commissions.phone_id = carrier_commissions.phone_id , dealer_commissions.name = carrier_commissions.name') .where('carrier_commissions.id null').where('customer_id: current_user.customer.id, created_at: start_date..end_date') } def self.reconciliation(start_date, end_date, current_user) ... dealer_commissions.unpaid.each |unpaid| unpaid.update(status: "unpaid", discrepancy_balance: unpaid.payment) if unpaid.initial_discrepancy.blank? unpaid.update(initial_discrepancy: unpaid.payment) end end end and here reconcile controller action has actual parameters:
def reconcile start_date = date.new(params[:range][:"start_date(1i)"].to_i,params[:range][:"start_date(2i)"].to_i,params[:range][:"start_date(3i)"].to_i) end_date = date.new(params[:range][:"end_date(1i)"].to_i,params[:range][:"end_date(2i)"].to_i,params[:range][:"end_date(3i)"].to_i) dealercommission.reconciliation(start_date, end_date, current_user) redirect_to dealer_commissions_url, notice: 'dealer commissions reconciled.' end this sample logs:
select count(*) "dealer_commissions" left outer join carrier_commissions on dealer_commissions.phone_id = carrier_commissions.phone_id , dealer_commissions.name = carrier_commissions.name "dealer_commissions"."customer_id" = ? , ("dealer_commissions"."created_at" between '2015-02-03' , '2015-06-03') , (carrier_commissions.id null) , (customer_id: current_user.customer.id, created_at: start_date..end_date) [["customer_id", 8]] sqlite3::sqlexception: unrecognized token: ":": select count(*) "dealer_commissions" left outer join carrier_commissions on dealer_commissions.phone_id = carrier_commissions.phone_id , dealer_commissions.name = carrier_commissions.name "dealer_commissions"."customer_id" = ? , ("dealer_commissions"."created_at" between '2015-02-03' , '2015-06-03') , (carrier_commissions.id null) , (customer_id: current_user.customer.id, created_at: start_date..end_date) the goal records condition (start date, end date, current_user).
you need correct syntax. @ moment you're passing static string mysql, not including rails variables.
.where('customer_id = ? , created_at > ? , created_at < ?', current_user.customer.id, start_date, end_date)
Comments
Post a Comment