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

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

SQL命令可以是例如:

SELECT id,name,username FROM Users

你知道我怎么处理这件事吗?

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

 User.find(:all, :select => 'id, name, username') 

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

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

 def self.get_ids_and_names self.connection.select_all("select id, name, username from users") end 

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

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

 User.pluck(:id) 

你也可以这样做

 User.find(:all).map(&:id) 

如果要获取用户ID或名称列表,请获取用户ID列表

我们可以使用select作为symbolstring例如:

 User.select("id, name, username") 

要么

 User.select(:id, :name, :username) 

你也可以传入一个数组,如下所示:

 Model.all.select ['id', 'title'] 

在mongoid中,那将是:

 User.only(:name, :username).where(id: params[:id]).first 

SQL

SELECT id,name,username FROM Users

ruby

User.select(:id, :name, :username)

有条件,你可以这样写: User.select(:id, :name, :username).find_by(:age 22)

实际上你只需要写这个

 @user= User.select(:attributeN, :attributeN......., attributeN) respond_to do |format| format.json { render json: @user }