我有两个模型:University
和Market
大学属于单一市场,市场可以有许多大学。例如,像波士顿这样的市场实例可能有麻省理工学院,哈佛大学,波士顿大学等大学实例。
我希望能够在控制台中执行以下操作:
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
我做错了什么?
答案 0 :(得分:4)
在一对多关系中,&#34; belongs_to&#34;结束必须是单数,如下所示:
class University < ApplicationRecord
belongs_to :market
end
class Market < ApplicationRecord
has_many :universities
end
如果有帮助,请告诉我