如何仅从模型中选择特定属性?

9 ruby-on-rails

我想只从模型中选择特定属性(id,name).

SQL命令可以是例如:

SELECT id,name,username FROM Users

你知道我怎么处理这个吗?

Ros*_*oss 23

相当古老的问题,但轨道3方式将是:

User.pluck(:id)
Run Code Online (Sandbox Code Playgroud)


Sha*_*ell 11

:select查找方法有一个选项.这允许你这样做:

User.find(:all, :select => 'id, name, username')
Run Code Online (Sandbox Code Playgroud)

返回的对象将是User具有这些可用属性的实例.

或者,如果你真的只想要值而不将它们包装为User实例.您可以添加方法User来返回它们.

def self.get_ids_and_names
  self.connection.select_all("select id, name, username from users")
end
Run Code Online (Sandbox Code Playgroud)

这将返回一个散列数组,将列名映射到该行的值.例如[{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]

  • 在Rails 3中:`User.select("id,name,username")` (4认同)