关系:表有很多用户。
我正在使用“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/