rails to_json上的ruby仅包括count

时间:2015-05-04 18:18:15

标签: ruby-on-rails

简单的例子,我有两个与has_many_belongs关联的模型关系

如何使用to_json函数users_count?

进行渲染
class Place < ActiveRecord::Base 
   has_and_belongs_to_many :users
end


class User < ActiveRecord::Base
   has_and_belongs_to_many :places
end

places = Place.all

render json: {desc:true,  status: 1,  data: places}.to_json(:include => [:users])




output: data[ 
            {
            place_id: 1,
            users[]
            }

我如何输出:

output: data[ 
            {
            place_id: 1,
            users_count: 10
            }

我是初学者,请帮忙吗? )

1 个答案:

答案 0 :(得分:1)

这是如何获得嵌套关系的一个很好的例子:Rails Object Relationships and JSON Rendering

您似乎不想要数据库列,而是要计算具有该位置的所有用户的信息。您可以在app/models/place.rb中定义一个看起来像的函数:

def users_count
  User.where(place_id: id)
end

然后,您可以将其作为以下方法包含在数据中:

render json: {desc:true,  status: 1,  data: places}.to_json(include: :users, methods: :users_count)

以下是如何在to_json中添加自定义方法的示例:http://www.tigraine.at/2011/11/17/rails-to_json-nested-includes-and-methods

我之前没有这样做,所以让我知道它是如何工作的!