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

Ruby on rails 如何仅从模型中选择特定属性?,ruby-on-rails,Ruby On Rails,我只想从模型中选择特定属性(id、名称) SQL命令可以是,例如: 从用户中选择id、名称、用户名 你知道我如何处理这个问题吗?有一个:在find methods上选择选项。这允许您执行以下操作: User.find(:all, :select => 'id, name, username') 返回的对象将是具有这些属性的User实例 或者如果您真的只需要这些值,而不将它们包装为User实例。您可以将方法添加到User以返回它们 def self.get_ids_and_names

我只想从模型中选择特定属性(id、名称)

SQL命令可以是,例如:

从用户中选择id、名称、用户名


你知道我如何处理这个问题吗?

有一个
:在find methods上选择
选项。这允许您执行以下操作:

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'},…]

您也可以这样做

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

如果要在mongoid中获取用户ID或名称列表,请执行以下操作:

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

很老的问题,但是rails 3的方式是:

User.only(:name, :username).where(id: params[:id]).first
User.pluck(:id)
SQL
从用户处选择id、名称、用户名

红宝石
User。选择(:id,:name,:username)

根据条件,您可以这样写:
User.选择(:id,:name,:username)。按(:age 22)查找

我们可以使用
选择
作为
符号或
字符串,例如:

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


其实你只需要写这个

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

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

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

在Rails3中:
User.select(“id,name,username”)
我已经在谷歌上搜索了一段时间了。谢谢我不建议这样做。这是一个答案,但它相当缓慢
User.find(:all)
返回每个项目的ActiveRecord对象的完整集合。然后使用ruby,它映射到这些对象,并只返回ID。你还得把那些垃圾收集起来。希望您的ID不会被用于其他内存密集型操作<代码>用户。拨动
和<代码>用户。选择
更有效