With arel
Arel may be useful to achieve your goal ...
p = Place.arel_table
arel_select = p.project('name').project('city')
arel_select.to_sql
=> "SELECT name, city FROM \"places\""
Place.find_by_sql(arel_select.to_sql)
Also works
arel_select = p.project('name')
arel_select.project('city').to_sql
But keep in mind ...
arel_select = p.project('name').project('city').project('city')
arel_select.to_sql
=> "SELECT name, city, city FROM \"places\""
With ActiveRecord
The merge method can also combine selected parts.
Place.select(:name).merge( Place.select(:city) )
SQL
SELECT "places"."name", "places"."city" FROM "places"
:
=> #<ActiveRecord::Relation [#<Place id: nil, name: "Zoo", city: "Berlin">]>
,
Place.select(:name).merge( Place.select(:city) ).merge(Place.select(:city) )
, ,
Eugen