铁轨4中的多对多关系

时间:2015-11-24 16:44:54

标签: ruby-on-rails json many-to-many relationship

你好,我的项目是大学1 - N City N - N Carreer 因此,一个carrer可以出现在许多城市,一个城市有许多carrers。

我的模特:

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”来保存数据库实现N-N

  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”和app粉碎,但是如果我在展示城市的时候画画,那就是我的职业生涯。

我们可以帮助我吗?感谢

1 个答案:

答案 0 :(得分:0)

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

如果你有索引方法的@cities实例变量,你可以这样做......

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

并且,出于性能原因,请执行此操作

City.include(:carrers) # 'include' to avoid n+1 query.