几个 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
我正在创建一个具有多个多对多关系的应用程序。这是一个示例:应用程序用户将拥有多项技能。同时,很多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