不知道为什么我不知道如何轻松地做到这一点......显然我可以用原始SQL做到这一点,但我正在尝试熟悉ActiveRecord。
results = Model.where(:lat => (south..north), :lng => (east..west))
我不想要所有的领域,只有几个。如何将结果限制为仅包括我选择的列?
答案 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