我对Rails很新,并对如何成功将子类别添加到现有的连接表关系提出疑问。
例如,假设我正在建立一个工作板。每项工作都有5个主要过滤类别(Job_Type [General Management, Finance & Operations, etc.]
,Industry [ Technology, Healthcare, etc.]
,Region [Northwest, Southeast, etc.]
等等。我希望每个人都有子类别(例如,这个职位有一个Region > Southeast > South Carolina > Greenville
)。
为5种主要过滤器类型设置初始连接表关联对于将来的过滤和可搜索性有意义。
修改
这是我当前的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
这允许我访问一个简单的关联模型数组,但我对如何将其移动到具有潜在的嵌套数组的数组数组感到困惑。为第一个连接表添加额外的连接表感觉很笨拙。我确信这是一个更好的解决方案,并希望得到你可能有的任何见解。
第二次编辑
这是一个代表性的图片,说明如果有帮助我想做什么。
谢谢!
答案 0 :(得分:0)
<强>解决强>
此表的数据很可能不会改变,这可以减轻复杂性并提供更直接的解决方案。
我在单个表中创建了单独的角色来限制查询和连接表。生成的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提供的有用评论和鼓励。