所以我希望我的用户模型具有很多技能。我希望技能有两种不同的类别:通缉技能和附属技能。
例如,用户可以将技能添加到他们拥有的个人资料中,例如HTML。他们还可以为他们希望学习的个人资料添加技能,例如Ruby on Rails。在他们的个人资料中,它将分别列出他们当前的技能和想要的技能。
从高层次来看,构建这个的最佳方法是什么?我只想要有1个没有重复的技能模型,但我希望有一种方法让用户在数据库中拥有2个独立的技能组。
答案 0 :(得分:1)
要实现这一目标,您需要两个技能字段,例如:wanted_skill
和possessed_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
答案 1 :(得分:1)
您可以使用单表继承
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'。您可以通过
检索它WantedSkill.where(:name => "html").first
您的用户关联可以像
class User < ActiveRecord::Base
has_many :wanted_skills
has_many :possessed_skills
end
您可以阅读文档here