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