用于分离同一模型的两种不同类型的数据库组织



所以我希望我的用户模型have_many技能。我希望技能分为两个不同的类别:想要的技能和拥有的技能。

例如,

用户可以将技能添加到他们拥有的个人资料中,例如 HTML。他们还可以在他们的个人资料中添加他们想要学习的技能,例如Ruby on Rails。在他们的个人资料中,它将分别列出他们当前的技能和想要的技能。

从高层次来看,构建它的最佳方式是什么?我只希望有 1 个技能模型,没有重复项,但我希望有一种方法让用户在数据库中拥有 2 组单独的技能。

您可以使用单个表继承

class Skill < ActiveRecord::Base
end
class WantedSkill < Skill
   belongs_to :user
end
class PossessesSkill < Skill
  belongs_to :user
end

技能表应有一个名为 type 的列,其中将存储技能的类型。

WantedSkill.create(:name => "html")

以上将记录保存在技能表中,类型为"想要技能"。您可以通过以下方式检索它

WantedSkill.where(:name => "html").first

您的用户关联可以像

class User < ActiveRecord::Base
   has_many :wanted_skills
   has_many :possessed_skills
end

您可以在此处阅读文档

要实现这一目标,您需要两个技能领域,例如:wanted_skillpossessed_skill

因此,在Ruby on Rails中,您可以对同一模型进行许多引用(具有不同的名称),您只需要在引用中使用class_name声明哪个类相对应,例如:

class User < ActiveRecord::Base
  belongs_to :wanted_skill, class_name: 'Skill'
  belongs_to :possessed_skill, class_name: 'Skill'
end

相关内容

  • 没有找到相关文章

最新更新