Hi,

With Rails 4.1.7 I want to build a generic query calculating the minimum of 
a 'position' field. The 'group by' of this query is dynamic. There may be 
one or not, like so:

grouping=[]
Item.group(grouping).having("minimum_position>1").minimum(:position).each 
do |item, min_pos|
  ....
end

I found out that if there is a grouping 
Item.group(:parent).having("minimum_position>1").minimum(:position) will 
generate:

SELECT *MIN(`items`.`position`) AS minimum_position*, parent_type AS 
parent_type, parent_id AS parent_id, position AS position FROM `items`  
GROUP BY parent_type, parent_id, position HAVING minimum_position>1

And if there is no grouping: 
Item.having("minimum_position>1").minimum(:position) will generate:

SELECT *MIN(`items`.`position`) AS minimum_id* FROM `items` HAVING 
minimum_position>1

which leads to an exception error as there is no field 'minimum_position'


Why do these two queries do not generate the same column name for the 
Minimum(:field) function?

Would it not be more Rails like to generate the same column name? Would it 
be worth proposing it as an issue?


Thanks


Jan

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to