我不知道如何在几个模型之间建立这种关联。任何建议将不胜感激。共有四种型号。我在页面底部发布了一个我正在考虑的UI模型,因为一张图片值1000字。
有Events
。活动可以是聚会或毕业典礼等等。
每个活动都有很多Positions
。职位是人们将被雇用的职位。如果一个活动有5个空缺职位,这意味着他们希望有5个人参加活动。
每个职位可以有很多Jobs
与之相关联。工作可以是做饭,服务员, DJ 等等。因此,事件计划员可以指定职位(例如人)将需要完成任意数量的工作。一个职位可能需要充当服务员和厨师。另一个职位可能只是调酒师。等等。
乔布斯将成为一个查询表;活动策划者将从预先存在的工作列表中进行选择。他们无法创建自己的记录。
每份工作都有很多专业。酒保可以拥有啤酒,葡萄酒, Flair 等专业。厨师可以为意大利语或墨西哥等
专业也将是一个查询表;活动策划者将从已有的专业列表中进行选择。他们可以选择该职位所需的任何专业。他们无法创建自己的专业记录。
我尝试了几种变化,但它们并没有像我想象的那样保存。我认为Job
应该has_and_belongs_to_many
Positions
,但我不知道应该有什么专业。查找表需要belong_to
Jobs
专业版,但每个职位,每个职位也需要选择它们。 如何在这些项目之间建立关联,以充分利用Rails的自动化功能?
(它在XCode / Interface构建器中被模拟,但我向你保证,这是一个Ruby on Rails站点)
答案 0 :(得分:1)
我只使用has_many_and_belongs_to_many
而不是使用has_many :xxx, through: :join_table
。这样你就可以控制JoinTable。
has_many :positions
has_many :jobs
belongs_to :event
has_many :specialities, through: "JobSpecialties"
has_many :position_jobs
# belongs_to :position -- no longer needed
has_many :jobs, through: "JobSpecialites
belongs_to :specialties
belongs_to :jobs
belongs_to :position
belongs_to :job
has_many :specialties, through: :position_job_specialties
belongs_to :position_job
belongs_to :speciality
您需要创建某种验证,以确保您选择的专业与PositionJob.rb中属于所选作业的专业相对应
编辑:在仔细阅读规范后添加了更多课程。