我正在创建一个具有多个多对多关系的应用。这是一个例子:应用程序用户将拥有多种技能。与此同时,许多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作为我的数据库
答案 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