Select distinict on not chainable with order method

Hi. I would like to do code refactoring:     @beers =     Beer.all.each do |beer|       unless @beers.find{|c| c.brand_id == beer.brand_id}         @beers << beer       end       break if @beers.size > 29     end

So I achieved this by writing scope (on PostgreSQL):

scope :with_unique_brand, select("DISTINCT ON (beers.brand_id) beers.*")

Using this scope alone is working correct, however chaining that scope with order method, throws strange error:

Beer.with_unique_brand.order("created_at"):

  Beer Load (1.1ms) SELECT * FROM (SELECT DISTINCT ON (beers.brand_id) beers.* FROM "beers") AS id_list ORDER BY id_list.alias_0 PGError: ERROR: column id_list.alias_0 does not exist LINE 1: ...and_id) beers.* FROM "beers") AS id_list ORDER BY id_list.al...                                                              ^ : SELECT * FROM (SELECT DISTINCT ON (beers.brand_id) beers.* FROM "beers") AS id_list ORDER BY id_list.alias_0 PGError: ERROR: column id_list.alias_0 does not exist LINE 1: ...and_id) beers.* FROM "beers") AS id_list ORDER BY id_list.al...                                                              ^ : SELECT * FROM (SELECT DISTINCT ON (beers.brand_id) beers.* FROM "beers") AS id_list ORDER BY id_list.alias_0

Any idea why?

More on this problem: https://rails.lighthouseapp.com/projects/8994/tickets/6450-arel-generates-invalid-sql-when-using-distinct-on-in-postgresql