Rails关联有一个/属于vs有多个/属于

时间:2016-09-01 09:07:44

标签: ruby-on-rails associations

我想创建两个表,一个是Job,一个是JobType。

每个Job都有一个job_type即。临时,兼职或全职。

class Job < ApplicationRecord
  has_one :job_type
end

class JobType < ApplicationRecord
  belongs_to :job
end

所以我的job_type表看起来像这样

id  type    job_id
1   temp      1
2   temp      2
3   fulltime  3
4   temp      4

似乎多余......

我应该做什么,工作属于job_type而job_type有很多这样的工作?

id   name   job_type_id
1   waiter    1
2   waiter    2
3   clerk     1

id   type  
1    temp
2    fulltime

我很困惑。任何帮助表示赞赏。感谢。

3 个答案:

答案 0 :(得分:1)

一个工作可以有很多工作类型,关联就像

:n

否则你可以给关联,比如一个工作有多个job_types,一个job_type有很多工作。

class Job < ApplicationRecord
  has_many :job_type
end

class JobType < ApplicationRecord
  belongs_to :job
end

答案 1 :(得分:0)

此问题适合many-to-many relationship job has_many job_types,任何job_type可以has_may jobs

为此,您需要一个联接表 - jobs_jobs_types

您的数据将如下所示:

jobs
id   name   
1   waiter  
2   clerk   

jobs_types
id   type  
1    temp
2    fulltime

jobs_jobs_types
job_id job_type_id
1 1
1 2
2 1

我将为您留下代码。 :)您可以在此Railscast获得更多帮助。

答案 2 :(得分:0)

Ruby只是一种简单的编程语言。它完全按照我们的说法运作。

For eg: A Posts has_many Comments and Comments belongs_to Post.

在这里你可以清楚地看到,这里的多元化告诉我们,特定帖子有很多评论。 同样的想法适用于has_one关系,User has_many Votes和Votes belongs_to User。 因此,在你的情况下,我建议你把你的协会写成 job has_many types和job_types属于job。

因此,这里的job_types表将使用表作业的主键作为数据规范化的外键。