ruby-on-rails - 我怎样才能使ActiveRecord的调用也返回要在json中呈现的列名?

标签 ruby-on-rails activerecord

def jsontest
   @users = User.all.limit(10)
   render json: @users
end

产量
{
...

"id": 7,
"name": "Sage Smith",
"email": "example-6@railstutorial.org",
"created_at": "2013-10-17T02:29:15.638Z",
"updated_at": "2013-10-17T02:29:15.638Z",
"password_digest": "$2a$10$taHk3udtWN61Il5I18akj.E90AB1TmdL1BkQBKPk/4eZ7YyizGOli",
"remember_token": "118f807d0773873fb5e4cd3b5d98048aef4f6f59",
"admin": false

...
}

但我想从此API中省略某些特定字段,所以我使用pluck
def jsontest
  @users = User.all.limit(10).pluck(:id, :name, :email, :created_at) ###
  render json: @users
end

但是当我想让每个对象的属性可以通过哈希键访问时,pluck返回一个仅包含值的数组。
[
...

    7,
    "Sage Smith",
    "example-6@railstutorial.org",
    "2013-10-17T02:29:15.638Z"

...    

]

那么,如何有效地使用值及其键?

我意识到我可以扫遍@users并在拔出并重新创建哈希值之前获取键,但是我希望有一些方便的方法可以完全满足我的需求。

最佳答案

使用select而不是pluck:

def jsontest
  @users = User.select('id, name, email, created_at').limit(10)
  render json: @users
end

关于ruby-on-rails - 我怎样才能使ActiveRecord的调用也返回要在json中呈现的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20794398/

相关文章:

javascript - Ember 数据 find() 方法返回数组,但我需要一条记录

ruby-on-rails - 在任何来源中都找不到 rake-10.0.3

iphone - 在两个不同的系统之间同步对象,最好的方法是什么?

ruby-on-rails - 在公共(public)属性上连接两个 ActiveRecord 关联

mysql - 在 Rails 项目中映射旧数据库列

ruby-on-rails - 在 8000 万行表上索引 UUID

mysql - 在另一个范围内重用多个范围以在 Rails 中创建搜索多个字段

ruby-on-rails - 为什么不同的 rake 命令会影响不同的数据库?

javascript - Rails 不显眼的 javascript - 无法加载资源

php - 在多个表上使用一对多构建 MySQL 查询时遇到问题