mysql - 如何在 json 响应中自定义一个键?

标签 mysql ruby-on-rails json

关系:表有很多用户。

我正在使用“includes”来打印与关联用户相关的表格详细信息:

Table.includes(:users)

但是如果我为用户使用条件,比如 users.active as:

Table.includes(:users).where( :users => { active: true } )

我正在获取包含活跃用户的表格。效果很好。但是如果一个表没有活跃用户,它返回空。 我需要的是,即使没有事件用户(在这种情况下,不包括用户部分)也能打印表格详细信息。即,如果有任何事件用户,则必须沿着表格打印它,否则只打印表格。 所以我在模型中写了一个过滤方法:

has_many :active_users, class_name: "User", :conditions => { active: 'yes'}

并且,在 Controller 中:Table.includes(:active_users)

现在,对于 json 响应:

render :json => { :table => @table.as_json(:include => :active_users) }

因此 key 以“active_users”的形式出现。

但我喜欢把这个 key 作为“用户”,我一直在寻找解决方案。谁能推荐一个 sol。

TIA!

最佳答案

覆盖 Table#as_json 以包含用户

def as_json(opts={})
  super.merge(
    users: active_users.as_json(only: [:id, :username, ...]
  )
end

我建议将用户属性列入白名单,以确保您不会泄露任何敏感信息。

关于mysql - 如何在 json 响应中自定义一个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40601901/

相关文章:

mysql - LeftJoin Minus(右表数据+内连接数据)

php - PHP 中的解码文本不解码

javascript - 在 Rails 应用程序中使用无限滚动

json - jq 以不同的方式对 KEY 和 VALUES 进行排序 - 如何以相同的顺序枚举它们?

php - 带有序通配符的 MySQL 搜索,并提取它们的值

c# - Entity Framework 有mysql,实体没有PK

ruby-on-rails - Rails 帖子脚手架不解析 html

sql - 如何在 Rails 3/4 中批量运行更新?

json - CGI 脚本向我显示 "garbage"而不是 JSON 对象

javascript - Angular JS/IONIC 读取 JSON 文件