ActiveRecord查找并仅返回选定的列

tim*_*one 83 ruby-on-rails ruby-on-rails-3 rails-activerecord

编辑2

如果您偶然发现了这个问题,请检查两个答案,因为我现在正在使用这个问题


我有一个相当大的自定义数据集,我想回到json作为回声.一部分是:

l=Location.find(row.id)
tmp[row.id]=l
Run Code Online (Sandbox Code Playgroud)

但我想做的事情如下:

l=Location.find(row.id).select("name, website, city")
tmp[row.id]=l
Run Code Online (Sandbox Code Playgroud)

但这似乎没有用.我怎么能让这个工作?

谢谢

另外编辑1
,有没有办法可以传递一个只包含我想要包含的属性的数组?

pra*_*ase 202

动物内脏(列)

此方法旨在通过单个列执行select作为直接SQL查询返回具有指定列名称值的数组值与列具有相同的数据类型.

例子:

Person.pluck(:id) # SELECT people.id FROM people
Person.uniq.pluck(:role) # SELECT DISTINCT role FROM people
Person.where(:confirmed => true).limit(5).pluck(:id)
Run Code Online (Sandbox Code Playgroud)

http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck

它引入了3.2以后的导轨,只接受单列.在rails 4中,它接受多列

  • Model.uniq现在是Model.distinct(至少在Rails 5中)。 (2认同)

jef*_*unt 81

在Rails 2中

.find

...要么...

.select(...).where(...).first

此参考文档为您提供了可以使用的完整选项列表.find,包括如何按编号,ID或任何其他任意列/约束进行限制.

在Rails 3中使用ActiveRecord查询接口

.select(...).where(...).first

参考:Active Record Query Interface

您还可以交换这些链式调用的顺序.find- 所有这些调用都是构造SQL查询然后将其发送出去.


tkh*_*ynh 14

我的答案很晚,因为我是一个非常新的开发人员.这是你可以做的:

__CODE__

顺便说一句,这是Rails 4

  • 这应该是选定的答案,也是最直接回答问题的答案。 (3认同)