我对Rails并不陌生,并且对如何将子类别成功添加到现有的Join Table关系中存在疑问。
例如,假设我正在构建工作板。每个作业都有5个主要的过滤器类别(Job_Type [General Management, Finance & Operations, etc.]
,Industry [ Technology, Healthcare, etc.]
,Region [Northwest, Southeast, etc.]
等)。我希望每个人也都有子类别(例如,此职位发布有Region > Southeast > South Carolina > Greenville
)。
为5种主要过滤器类型设置初始的Join 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
我目前在ActiveRecord上直接使用联接表而不是数组,以提高速度并稍后进行过滤/搜索功能。它还使我可以将这些联接表与大量其他必要的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
这使我可以访问一个简单的关联模型数组,但是我对如何将其移到具有潜在的进一步嵌套数组的数组感到困惑。为第一个联接表添加其他联接表感觉很麻烦。我敢肯定有更好的解决方案,并且希望获得您可能拥有的任何见解。
第二编辑
这是我要尝试做的有代表性的图片。
谢谢!
最佳答案
解决了
该表的数据很可能不会更改,这会降低复杂性并提供更直接的解决方案。
我在单个表中创建了单独的角色,以限制查询和联接表。生成的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
这为我提供了在单个表中创建关系并使用
parent.id
轻松将其分类到嵌套复选框中所需的所有字段。感谢所有查看此问题的人,并感谢Val Asensio对您的有益评论和鼓励。
关于ruby-on-rails - 连接表中的嵌套关系-Rails,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33084725/