2017-09-20 74 views
2

我有两个型号:UniversityMarket的has_many belongs_to的ASSOCATION问题

大学属于一个市场,并且市场可以有很多的大学。例如,市场像波士顿的一个实例,可能有像麻省理工学院,哈佛大学,波士顿大学等

我希望能够做这样的事情在控制台大学实例:

University.first.market.name

但我得到以下错误:

NoMethodError: undefined method `market' for #

我可以从University.first.market_id得到市场的ID,但我无法从market.name得到名字。

这里是我如何我的模型建立:

class University < ApplicationRecord 
belongs_to :markets 

class Market < ApplicationRecord 
has_many :universities 
end 

这里是我的架构 - 我觉得跟market_id整数列和索引的正确实施

create_table "universities", force: :cascade do |t| 
    t.string "name" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "full_name" 
    t.integer "market_id" 
    t.index ["market_id"], name: "index_universities_on_market_id" 
end 

这里是我的(?)市场架构:

create_table "markets", force: :cascade do |t| 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.string "name" 
    end 

我在做什么不正确?

+0

你也可以写你的迁移为t。 belongs_to:市场而不是t.integer“market_id” – s1mpl3

回答

4

在一个一对多的关系中,“belongs_to的”端必须是单数,如下图所示:

class University < ApplicationRecord 
    belongs_to :market 
end 

class Market < ApplicationRecord 
    has_many :universities 
end 

让我知道这是否有助于

+0

我很习惯做多对多的关系,这完全没有我注意到滑落。感谢布鲁诺! – mike9182

+0

不客气! –