Custom sort scope for ActiveRecord search

25 views
Skip to first unread message

eugene miretsky

unread,
May 25, 2012, 3:48:21 AM5/25/12
to rubyonra...@googlegroups.com
Hi,

Here is my problem. I store some of my data in a MYSQL DB and some of it in Redis. In my search I need to be able to combine results from both. 
Right now my code looks like this:
scope = User.scoped({})
cope = scope.where("users.gender = ?", gender)
cope = scope.where("users.age = ?", age)
etc.. 
I want to take the result and either sort it using the data that's in Redis. It is possible do create a scope for that? 
The best I could come up with was users = User.search().sort_by {|user| ...} . The problem with is is that it returns an array instead of an active record  associations, so now pagination doesn't work. 

Regards,
Eugene 

Frederick Cheung

unread,
May 25, 2012, 4:13:11 AM5/25/12
to Ruby on Rails: Talk
This kind of stuff never works very nicely in my past experience - you
end up having to fetch "too many" records from one of your datasources
because you don't know what ordering the other one is going to impose.
If you're using will paginate you should be able to paginate arrays if
you do require 'will_paginate/array'

Fred
Reply all
Reply to author
Forward
0 new messages