1

我不知道如何在几个模型之间建立这种关联。任何建议将不胜感激。共有四种型号。我在页面底部发布了我正在考虑的 UI 模型,因为一张图片值 1000 字。

活动

Events。一个事件可以是聚会或毕业典礼或其他什么。

职位

每个事件可以有很多Positions. 职位是人们将被雇用的原因。如果某个活动有 5 个空缺职位,这意味着他们希望有 5 人参与该活动。

工作

每个位置都可以有很多Jobs与之相关的。工作可以是厨师服务员DJ等。因此,活动策划者可以指定一个职位(例如人)需要完成任意数量的工作。一个职位可能需要同时担任服务员和厨师。另一个职位可能只是调酒师。等等。

Jobs 将是一个查找表;活动策划者将从预先存在的工作列表中进行选择。他们无法创建自己的记录。

特产

每个工作都有很多专业。调酒师可以有啤酒葡萄酒风味等特色菜。厨师可以有意大利墨西哥菜等特色菜。

专业也将是一个查找表;活动策划者将从预先存在的专业列表中进行选择。他们可以选择该职位所需的任意数量的专业。他们无法创建自己的专业记录。

结论

我已经尝试了几种变体,但它们并没有像我想象的那样保存。我认为Job应该has_and_belongs_to_many有,Positions但我不知道应该是什么专业。专业需要belong_to Jobs查找表,但也需要按工作、按职位选择。应该如何设置这些项目之间的关联以充分利用 Rails 的自动化功能?

样机用户界面

(它在 XCode/Interface builder 中被模拟,但我向你保证,这是一个 Ruby on Rails 站点)

在此处输入图像描述

4

1 回答 1

1

而不是使用 ahas_many_and_belongs_to_many我只是使用 a has_many :xxx, through: :join_table。这样您就可以控制 JoinTable。

事件.rb

has_many :positions

位置.rb

has_many :jobs
belongs_to :event

作业.rb

has_many :specialities, through: "JobSpecialties"
has_many :position_jobs
# belongs_to :position -- no longer needed

专业.rb

has_many :jobs, through: "JobSpecialites

JobSpecialty.rb

belongs_to :specialties
belongs_to :jobs

PositionJob.rb

belongs_to :position
belongs_to :job
has_many :specialties, through: :position_job_specialties

PositionJobSpecialty.rb

belongs_to :position_job
belongs_to :speciality

您需要创建某种验证以确保您选择的专业与属于 PositionJob.rb 中所选工作的专业相对应

编辑:在仔细阅读规范后添加了更多类。

于 2013-07-19T17:55:11.783 回答