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

Ruby on rails 用于分离同一模型的两种不同类型的数据库组织,ruby-on-rails,relationships,database-relations,Ruby On Rails,Relationships,Database Relations,所以我希望我的用户模型有很多技能。我希望技能分为两类:通缉技能和拥有技能 例如,用户可以向其个人资料中添加他们拥有的技能,如HTML。他们还可以向个人资料中添加他们希望学习的技能,例如RubyonRails。在他们的个人资料中,它会分别列出他们目前的技能和需要的技能 从较高的层次来看,什么是构建此架构的最佳方式?我只希望有一个没有重复的技能模型,但我希望有一种方法让用户在数据库中拥有两个独立的技能组 要实现这一点,您需要两个技能领域,如:通缉技能和拥有技能 因此,在Ruby on Rails中,

所以我希望我的用户模型有很多技能。我希望技能分为两类:通缉技能和拥有技能

例如,用户可以向其个人资料中添加他们拥有的技能,如HTML。他们还可以向个人资料中添加他们希望学习的技能,例如RubyonRails。在他们的个人资料中,它会分别列出他们目前的技能和需要的技能


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

要实现这一点,您需要两个技能领域,如:
通缉技能
拥有技能

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

class User < ActiveRecord::Base
  belongs_to :wanted_skill, class_name: 'Skill'
  belongs_to :possessed_skill, class_name: 'Skill'
end
class用户
您可以使用单表继承

class Skill < ActiveRecord::Base
end

class WantedSkill < Skill
   belongs_to :user
end

class PossessesSkill < Skill
  belongs_to :user
end
上面将以“WantedSkill”类型将记录保存在技能表中。你可以通过

WantedSkill.where(:name => "html").first
您的用户关联可以是

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

你可以阅读文档

我想做的不是有很多:想要的技能,类别名称:'skill'而不是归属于?是的,但是
归属于
对你的代码更有意义,使用这个方法每个字段只能关联一个技能,如果你想要多个,你需要一个
class User < ActiveRecord::Base
   has_many :wanted_skills
   has_many :possessed_skills
end