【发布时间】:2020-02-14 12:11:26
【问题描述】:
我有一个颜色模型:
class Color < ApplicationRecord
belongs_to :sector
扇形模型:
class Sector < ApplicationRecord
has_many :colors
我创建了一个连接表,例如:
class CreateJoinTableColorSector < ActiveRecord::Migration[6.0]
def change
create_join_table :color, :sectors do |t|
t.index %i[color_id sector_id]
t.index %i[sector_id colore_id]
end
end
end
现在我想获取属于特定扇区的所有颜色。我试过了:
Color.joins(:sectors).where({ sector: sector })
但它返回一个错误→uninitialized constant Color::Sectors
【问题讨论】:
-
ColorScheme是什么?colore_id和has_many :color(应该是复数)中有一个错字。您是否在运行迁移后更新了模型?您是否为连接表创建了模型?为什么要在一对多关系中使用连接表? -
我修正了我不是连接表模型的拼写错误,我应该这样做吗?我尝试获取属于特定部门的所有颜色,我认为加入是要走的路
-
我认为没有它你也没问题。看看你的关系,它们是“颠倒的”,一种是复数形式,而应该是单数形式(颜色),另一种是单数形式,应该是复数形式(部门)。
Color.where(sector_id: sector.id)可能会起作用。 -
试试
Color.joins(:sector)
标签: ruby-on-rails ruby join activerecord