Hello all,
I''m trying to get some records in my application to sort based on a SQL
calculated value and am getting no records returned. I have checked and
double checked and the query that TS is indexing is working out, but the
problem is with the controller.
Here is what I''m indexing:
----------------------------------------------------------
indexes "((#{AppSystem::Income::BASE} - applications.monthly_income *
12)) +
SUM(#{AppSystem::Income::ADDITIONAL} -
(COALESCE(household_members.monthly_income, 0) * 12))",
:sortable => true, :as => :applicant_need, :joins =>
:household_members,
:type => :float
----------------------------------------------------------
It''s a pretty complex index, but again it is working. It creates an
index of a float that is a Max income to qualify (MIQ) minus Total
Household Income (THI) MIQ - THI and this is what is indexed.
In my controller, I have a search action:
----------------------------------------------------------
def search
@searched = params[:search]
@sort = params[:sort_by].to_i
@filter = params[:filter_by].to_i
application_ids = Application.search_for_ids(@searched,
:select => "id, applicant_id",
:group_by => ''applicant_id'', :group_function =>
:attr,
:with => Application.filter_for_search(@filter, @season),
:sort_mode => :extended,
:order => Application::Search::SortBy::SPHINX[@sort], # this gives
me sql string to sort by
:per_page => 1000)
@applicant_ids = Applicant.search_for_ids("@application_ids
''#{application_ids * ''|''}''",
:match_mode => :extended2, :page => params[:page], :per_page =>
5,
:sort_mode => :extended,
:order => Application::Search::SortBy::SPHINX[@sort]) # this gives
me sql string to sort by
@applicants = @applicant_ids.empty? ? [] :
Applicant.find(@applicant_ids,
:select => "applicants.*, MAX(applications.created_at) AS
most_recent",
:joins => [:applications],
:group => "applicants.id",
:order => Application::Search::SortBy::VALUES[@sort]).to_a # this
gives me sql string to sort by
render :action => ''index''
end
----------------------------------------------------------
When user sorts by last name related to application (first_name or
last_name, ASC or DESC) the sorting works fine. But sorting on
applicant_need (calculated float) I get no results.
Doing a "Rails.logger.info" check below each (application_ids,
@applicant_ids and @applicants) I get this:
----------------------------------------------------------
++++ application_ids ++++
[4, 2, 1]
++++ @applicant_ids ++++
[] # all other sorting would have an array of ids here
++++ @applicant ++++
[]
----------------------------------------------------------
I would appreciate any insight you might have. Thank you
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.