Forum: Ruby on Rails Rails 4.1 activerecord_relation conversion to array problem

Fba85550f845ee03a40e5397d1164048?d=identicon&s=25 Rodrigo Lueneberg (rodusa)
on 2014-04-11 03:34
After I upgraded from rails 3.2 to 4.1.0 I am getting this error
below.

I researched that Rails 4.1 requires a conversion of an
activerecord_relation to an array using to_a. I did use to_a but looks
like rails is modifying sql output and adding a "SELECT COUNT" behind
the scenes in order to convert it to an array. Do you know how to fix
this? Is this a bug in rails 4.1.0?


  def index
    order_type = params[:order_type]
    @oh = OrderHeader.select("orders_header.*, users.username, users.id
as customer_id, users.email, users.phone_work, users.phone_home,
users.phone_cell").
        joins("INNER JOIN users ON users.id = orders_header.customer_id
").
        where("orders_header.order_type='#{order_type}' and
orders_header.customer_id=#{session[:user_id]}").
        order("id desc").
        paginate(:per_page => 10, :page => params[:page])
    return @oh.to_a
  end

Mysql2::Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near '*, users.username, users.id as customer_id, users.email,
users.phone_work, users' at line 1: SELECT COUNT(orders_header.*,
users.username, users.id as customer_id, users.email, users.phone_work,
users.phone_home, users.phone_cell) FROM `orders_header` INNER JOIN
users ON users.id = orders_header.customer_id WHERE
(orders_header.order_type='order' and orders_header.customer_id=1)

thanks
Rod
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2014-04-12 13:52
(Received via mailing list)
On Friday, April 11, 2014 2:34:12 AM UTC+1, Ruby-Forum.com User wrote:
>
> After I upgraded from rails 3.2 to 4.1 I am getting this error
> below.
>
> I researched that Rails 4.1 requires a conversion of an
> activerecord_relation to an array using to_a. I did use to_a but looks
> like rails is doing a select count behind the scenes. Do you know how to
> fix this?
>
> I don't think the to_a stuff is relevant. Your pagination library
(will_paginate?) is counting the total number of entries and appears to
be
producing a bad query to do that, because of the select query. Perhaps
try
updating it?

Fred
Fba85550f845ee03a40e5397d1164048?d=identicon&s=25 Rodrigo Lueneberg (rodusa)
on 2014-04-17 14:22
Thanks, I did updated will_paginate gem and still the problem. Looks
like it is not compatible with rails 4.1

The last version is of 3.0.5 September 18, 2013 (34 KB) according to the
link below:
https://rubygems.org/gems/will_paginate/versionsOn

However, on rails 4.0.4 it works beautifully.

Rod

> On Friday, April 11, 2014 2:34:12 AM UTC+1, Ruby-Forum.com User wrote:
>>
>> After I upgraded from rails 3.2 to 4.1 I am getting this error
>> below.
>>
>> I researched that Rails 4.1 requires a conversion of an
>> activerecord_relation to an array using to_a. I did use to_a but looks
>> like rails is doing a select count behind the scenes. Do you know how to
>> fix this?
>>
>> I don't think the to_a stuff is relevant. Your pagination library
> (will_paginate?) is counting the total number of entries and appears to
> be
> producing a bad query to do that, because of the select query. Perhaps
> try
> updating it?
>
> Fred
A47e0a6beeb9d048ff054fc1c3a97418?d=identicon&s=25 Walter Davis (walterdavis)
on 2014-04-17 15:23
(Received via mailing list)
I believe Kaminari can be dropped in (uses the same verbs) and it might
work for you. (Last commit was 7 days ago, if that means anything.)

Walter
Fba85550f845ee03a40e5397d1164048?d=identicon&s=25 Rodrigo Lueneberg (rodusa)
on 2014-04-17 15:40
Thank you Walter, I did not know about this gem. I will check it out.

Walter Davis wrote in post #1143372:
> I believe Kaminari can be dropped in (uses the same verbs) and it might
> work for you. (Last commit was 7 days ago, if that means anything.)
>
> Walter
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.