我有这个疑问:
Client.select("name as dname")
它运行良好。
Client.select("name as dname").first.dname
=> "Google"
现在我想得到所有的dname作为一个数组,但pluck方法不工作,因为dname不是列名。
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
如何获取dnames数组?有没有类似pluck的方法,对as定义的列名alias起作用。
我可以的
Client.select("name as dname").map{|d| d.dname}
但循环查看每一条记录对我来说毫无意义
3条答案
按热度按时间m2xkgtsf1#
我对勇气的理解是错误的。从apidock我了解到
使用pluck作为快捷方式来选择一个或多个属性,而无需加载一堆记录来获取您想要的属性。
那么
应该这样写
0dxa2lsx2#
使用此代码:
mkh04yzy3#
select
和pluck
不能很好地配合使用,但我使用了一种变通方法,将别名列连接到查询对象上,允许pluck。我通常将这样的连接编写为以with_
开头的作用域