2017-09-20 89 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

不客氣! –