2015-11-24 2 views
0

привет, у меня есть эта модель в моем проекте, Университет 1 - N Город N - N Carreer Таким образом, во многих городах может появиться карьера, и в городе много карьеров.отношение много ко многим в рельсах 4

мои модели:

University.rb 
    class University < ActiveRecord::Base 
    has_many :sedes 
    end 

City.rb 
    class Sede < ActiveRecord::Base 
     belongs_to :university 
     has_and_belongs_to_many :carrers 
    end 

Carrer.rb 
    class Carrer < ActiveRecord::Base 
    has_and_belongs_to_many :cities 
    end 

тогда я создать миграции "CitiesCarrers", чтобы сохранить ип realtionship базы данных NN

class CreateCitiesCarrers < ActiveRecord::Migration 

    def change 
     create_table :cities_carrers, :id => false do |t| 
     t.references :city 
     t.references :carrer 
     end 
     add_index :cities_carrers, :city_id 
     add_index :cities_carrers, :carrer_id 
    end 
    end 

так, как я сделать, чтобы отобразить в городах JSON, в carrers, которые являются отношения с ним?

in my CitiesController 

    def index 
     render json: {cities: City.all, carrers: Carrer.all }, methods: {:university_id :carrer_id } 
    end 

я поставил там «: carrer_id» и приложение раздавить, но если я сделать это, когда я показать города, carreers в BLAK.

мы можем помочь мне? благодаря

+0

Запятая отсутствует раньше: carrer_id, просто опечатка? – Swards

ответ

0
render json: { City.all, include: [:carrers] } 

Если у вас есть переменная @cities экземпляра из индексного метода, вы могли бы сделать это ...

render json: { @cities, include: [:carrers] } 

И, по соображениям производительности, это сделать

City.include(:carrers) # 'include' to avoid n+1 query. 
Смежные вопросы