has_many belongs_to assocation issue

时间:2017-09-20 18:32:09

标签: ruby-on-rails has-many belongs-to

我有两个模型:UniversityMarket

大学属于单一市场,市场可以有许多大学。例如,像波士顿这样的市场实例可能有麻省理工学院,哈佛大学,波士顿大学等大学实例。

我希望能够在控制台中执行以下操作:

University.first.market.name

但是我收到以下错误:

  

NoMethodError:#

的未定义方法`market'

我可以从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

我做错了什么?

1 个答案:

答案 0 :(得分:4)

在一对多关系中,&#34; belongs_to&#34;结束必须是单数,如下所示:

class University < ApplicationRecord
  belongs_to :market
end

class Market < ApplicationRecord
  has_many :universities
end

如果有帮助,请告诉我