几个 Rails 多对多关系

Several Rails many to many relationships

我正在创建一个具有多个多对多关系的应用程序。这是一个示例:应用程序用户将拥有多项技能。同时,很多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。 我知道没有 skills.add() 这样的东西。如果您有建设性的建议,请建议我可以使用什么。谢谢:)

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

我认为这是一个典型的多态的例子association.You可以查看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