Search code examples
sqlruby-on-railspostgresqlruby-on-rails-4activerecord

How to pluck "as alias_name" from rails active record query


I have this query:

Client.select("name as dname")

Which is working fine.

Client.select("name as dname").first.dname
=> "Google"

Now I want to get all dnames as an array but pluck method does not work as dname is not column name.

2.2.5 :040 > Client.select("name as dname").pluck(:dname)
   (0.6ms)  SELECT dname FROM "clients"
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column "dname" does not exist

How to get array of dnames? Is there any method like pluck which works on column name alias which is defined using as.

I can do this

Client.select("name as dname").map{|d| d.dname}

But looping through every record is not making any sense to me


Solution

  • Well my understanding of pluck was wrong. from apidock I understood that

    Use pluck as a shortcut to select one or more attributes without loading a bunch of records just to grab the attributes you want.

    So,

    Client.select("name as dname").pluck(:dname)
    

    Should be written like this

    Client.pluck(:name)