I want to add a new sum(time_entries.hours) column sum(time_entries.hours) to sql select. I am requesting the following entries:
issues = Issue.visible.where(options[:conditions]).all( :include => ([:status, :project, :time_entries] + (options[:include] || [])).uniq, :conditions => statement, :order => order_option, :joins => query_joins(order_option.join(',')), :limit => options[:limit], :offset => options[:offset], :group => "#{Issue.table_name}.id" )
It generates this selection:
SELECT "issues"."id" AS t0_r0, ... "time_entries"."hours" AS t3_r4, ... "versions"."sharing" AS t8_r9 FROM "issues" LEFT OUTER JOIN "projects" ON "projects"."id" = "issues"."project_id" LEFT OUTER JOIN "issue_statuses" ON "issue_statuses"."id" = "issues"."status_id" LEFT OUTER JOIN "time_entries" ON "time_entries"."issue_id" = "issues"."id" LEFT OUTER JOIN "users" ON "users"."id" = "issues"."assigned_to_id" LEFT OUTER JOIN "trackers" ON "trackers"."id" = "issues"."tracker_id" LEFT OUTER JOIN "enumerations" ON "enumerations"."id" = "issues"."priority_id" AND "enumerations"."type" IN ('IssuePriority') LEFT OUTER JOIN "issue_categories" ON "issue_categories"."id" = "issues"."category_id" LEFT OUTER JOIN "versions" ON "versions"."id" = "issues"."fixed_version_id" WHERE "issues"."id" IN (1) AND (projects.status <> 9 AND projects.id IN (SELECT em.project_id FROM enabled_modules em WHERE em.name = 'issue_tracking')) AND ((issues.status_id IN (SELECT id FROM issue_statuses WHERE is_closed = 'f'))) GROUP BY issues.id ORDER BY issues.id DESC
I tried to insert :select=>"*, sum(time_entries.hours)" into the hash parameter all , but there is no effect.
How to add a new column for this selection? Also I need to keep all current columns as they are used in filters. Is there a way without specifying all columns with my hands?
UPDATE: Ruby 1.9.3 Rails 3.2.13
source share