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

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -