Custom sort scope for ActiveRecord search


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)


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| …} . The problem with is is that it returns an array instead of an active record associations, so now pagination doesn’t work.



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'