联接表中的嵌套关​​系 - Rails

Nested relationships within Join Tables - Rails

我是 Rails 的新手,对如何成功地将子类别添加到现有的加入 Table 关系有疑问。

例如,假设我正在构建一个职位公告板。每个职位都有 5 个主要过滤器类别(Job_Type [General Management, Finance & Operations, etc.]Industry [ Technology, Healthcare, etc.]Region [Northwest, Southeast, etc.] 等)。我希望每个人都有子类别(例如,这份工作 post 有一个 Region > Southeast > South Carolina > Greenville)。

为 5 种主要过滤器类型设置初始加入 Table 关联对于将来的过滤和可搜索性很有意义。

编辑

这是我目前的Posting型号

class Posting < ActiveRecord::Base
  mount_uploader :avatar, AvatarUploader

  belongs_to :recruiter, class_name: "User"
  belongs_to :company
  has_many :interests
  has_many :comments, as: :commentable
  has_and_belongs_to_many :job_types
  has_and_belongs_to_many :industries
  has_and_belongs_to_many :regions
  has_and_belongs_to_many :market_caps
  has_and_belongs_to_many :ownerships
  has_many :users, through: :interests
  acts_as_followable
end

我目前正在使用 join tables 而不是直接在 ActiveRecord 上使用数组,以提高速度和稍后的 filtering/searching 功能。它还允许我将这些连接 table 与大量其他必要的 ActiveRecord 关联结合使用。

这里是 job_type 的片段:

class JobType < ActiveRecord::Base
  has_and_belongs_to_many :postings
  has_and_belongs_to_many :news_items
  has_and_belongs_to_many :companies
  has_and_belongs_to_many :users
  has_and_belongs_to_many :mkt_ints
end

这使我可以访问一个简单的关联模型数组,但我对如何将其转移到具有潜在的进一步嵌套数组的数组数组感到困惑。为第一个连接 table 添加额外的连接 table 感觉很笨拙。我相信有更好的解决方案,并且很乐意获得您可能拥有的任何见解。

第二次编辑

如果有帮助,这是我正在尝试做的代表性图片。

谢谢!

已解决


此 table 的数据很可能不会更改,这会降低复杂性并提供更直接的解决方案。

我在单个 table 中创建了不同的角色来限制查询和加入 table。生成的 Region ActiveRecord 如下所示:

class CreateRegions < ActiveRecord::Migration
  def change
    create_table :regions do |t|
      t.string :role # role [ region, state, city ]
      t.integer :parent # equal to an integer [ state.id = city.parent ] or null [ region has no parent ]
      t.string :name # [ ex: Southeast, South Carolina, Charleston ]
      t.timestamps null: false
    end
  end

end

这为我提供了在单个 table 中创建关系所需的所有字段,并使用 parent.id 轻松地将其分类到嵌套的复选框中。

感谢所有查看此问题的人,并感谢 Val Asensio 的有益评论和鼓励。