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

时间:2009-08-06 08:17:09

标签: ruby-on-rails

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

SQL命令可以是例如:

SELECT id,name,username FROM Users

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

8 个答案:

答案 0 :(得分:23)

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

User.pluck(:id)

答案 1 :(得分:11)

查找方法有: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'}, ... ]

答案 2 :(得分:3)

您也可以

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

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

答案 3 :(得分:1)

我们可以将select用于symbolstring,例如:

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

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

在mongoid中,那将是:

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

答案 6 :(得分:0)

SQL

SELECT id,name,username FROM Users

RUBY

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

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

答案 7 :(得分:0)

实际上你只需要写这个

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