2015-05-04 4 views
0

Простой пример, у меня есть две модели отношений с has_many_belongs ассоциациямирубин на рельсах to_json включают в счет только

Как сделать с функцией 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

Это хороший пример того, как получить вложенные отношения: 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

Я этого не делал раньше, поэтому дайте мне знать, как это работает!

+0

Вы действительно помогаете мне. Большое спасибо – SunnatillaAxakalov

+0

Этот ответ должен быть отмечен правильно –

Смежные вопросы