几个Rails有很多很多关系

时间:2016-06-23 19:00:23

标签: ruby-on-rails ruby activerecord has-many

我正在创建一个具有多个多对多关系的应用。这是一个例子:应用程序用户将拥有多种技能。与此同时,许多job_posts将拥有多项技能。我希望能够重用技能模型,所以我可以这样:

    User----has_many----->Skill(smart)<---has_many----job_posting
                              ^
                              |
                           has_many
                              |
                          Application

所以你看,我希望基本上能够创建一个技能(在这个例子中:“smart”),然后使用has_many关系从几个不同的模型中引用该技能。

这样做的最佳方式是什么?我想避免创建一些额外的模型来处理关系,因为我在我的应用程序中有几个这样的设置。

最后,能够做到这样的事情会很高兴: myUser.skills.add(Skill.find(1)) myCompany.skills.add(Skill.find(1))...

P.S。 我知道没有skill.add()这样的东西。如果你有建设性的话,请建议我可以使用什么。谢谢:))

P.P.S 我正在使用mysql作为我的数据库

1 个答案:

答案 0 :(得分:1)

我认为这是多态关联的典型示例。您可以在2.9节查看相关文档here。在您的情况下,您可以使用

class Skill < ActiveRecord::Base
  belongs_to :skillable, polymorphic: true
end

class User < ActiveRecord::Base
  has_many :skills, as: :skillable
end

class JobPosting< ActiveRecord::Base
  has_many :skills, as: :skillable
end