仅使用Rails 3 where子句检索某些列

时间:2011-07-11 18:18:49

标签: ruby-on-rails-3 activerecord

不知道为什么我不知道如何轻松地做到这一点......显然我可以用原始SQL做到这一点,但我正在尝试熟悉ActiveRecord。

results = Model.where(:lat => (south..north), :lng => (east..west))

我不想要所有的领域,只有几个。如何将结果限制为仅包括我选择的列?

3 个答案:

答案 0 :(得分:29)

results = Model.where(:lat => (south..north), :lng => (east..west)).select([:lat, :long, :id])

如果您希望结果的行为与合理的:id对象一样,您也可能希望在该选择中包含ActiveRecord

编辑:选择一个arg,可以是一个数组。

答案 1 :(得分:4)

您需要使用选择

Model.where(...)。选择(...)

选择accept array或raw sql string。

http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields

答案 2 :(得分:0)

从技术上讲,如果要为只读模型重用数据子集过滤器,可以在数据库级别创建“视图”。见http://dev.mysql.com/doc/refman/5.0/en/views.html