我应该在这种情况下使用多态关联吗?

时间:2012-10-18 06:14:23

标签: ruby-on-rails ruby-on-rails-3

我有3个型号。 JobsBusinesses,& Categories

Jobs有很多categories

Businesses有很多categories

Categories有很多jobs

Categories有很多businesses

多态关联是否最适合此场景?


category.rb

class Category < ActiveRecord::Base
  attr_accessible :name
  belongs_to :categorised, polymorphic: true
end

business.rb

class Business < ActiveRecord::Base
  has_many :categories, as: :categorised
end

job.rb

class Job < ActiveRecord::Base
  has_many :categories, as: :categorised
end

2 个答案:

答案 0 :(得分:1)

我认为这取决于JobBusiness对象之间的共同点。如果它们大多具有相同的属性,那么是的,将它们存储在同一个表中可能是有意义的。

但在任何一种情况下,你都有多对多的关系:Jobs有很多Categories,而Categories有很多Jobs。这将要求与连接两者的连接表建立:has_and_belongs_to_many关系。

答案 1 :(得分:0)

我会建议你关系

category.rb

class Category < ActiveRecord::Base
   attr_accessible :name
   has_and_belongs_to_many :business
   has_and_belongs_to_many :jobs
end

business.rb

class Business < ActiveRecord::Base
   has_and_belongs_to_many :categories
end

job.rb

class Job < ActiveRecord::Base
    has_and_belongs_to_many :categories
end