dns*_*nsh 7 sql postgresql activerecord ruby-on-rails ruby-on-rails-4
我有这个问题:
Client.select("name as dname")
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
Client.select("name as dname").first.dname
=> "Google"
Run Code Online (Sandbox Code Playgroud)
现在我想将所有dnames作为数组,但是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
Run Code Online (Sandbox Code Playgroud)
如何获取dnames数组?是否有像pluck这样的方法可以使用as定义的列名别名.
我可以做这个
Client.select("name as dname").map{|d| d.dname}
Run Code Online (Sandbox Code Playgroud)
但循环遍历每条记录对我来说没有任何意义
我对拔毛的理解是错误的.从apidock我明白了
使用pluck作为快捷方式选择一个或多个属性而不加载一堆记录只是为了获取所需的属性.
所以,
Client.select("name as dname").pluck(:dname)
Run Code Online (Sandbox Code Playgroud)
应该这样写
Client.pluck("name as dname")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3347 次 |
| 最近记录: |