关键字/技能的功能类似于LinkedIn

时间:2016-01-01 07:10:04

标签: ruby-on-rails ruby database-design autocomplete database-schema

我的网络应用会让用户为他们的个人资料填写申请表。用户可以通过多年的经验输入他们的技能。我的数据库中可能有技能表。用户has_many技能和技能has_many用户。

当一个技能有很多用户时,这不会使我的表非常庞大,因为虽然可能已经在数据库中创建了一项技能,但它必须创建一个与user_id匹配的新行吗?如果是这样,有没有更有效的方法来做到这一点(我想这种格式对服务器来说是昂贵的)?一般来说,用户可以拥有0种技能,每种技能可达100种。

技能需要与帖子交叉引用,以便只有符合x技能的用户才能看到帖子。例如,发布要求用户具有x,y,z技能以及相关的经验长度。这将是一组控制结构。假设一个用户将他的技能放在'rails framework'而另一个用户将他的技能放在'rails development'中。这些技能相同,但对于发布帖子的人来说,为了确保他们获得所有合格用户,他们必须输入技能的每种格式。有没有办法解决这个问题,以便更有效率?

它可能有一个LinkedIn,StackOverflow,Quora风格的格式,用于开始输入技能的技能,然后自动填充/创建建议,然后用户只需点击相应的技能。

1 个答案:

答案 0 :(得分:0)

对于问题的第一部分,您要查找的内容是has_and_belongs_to_manyhas_many :through关联:

http://guides.rubyonrails.org/association_basics.html#the-has-and-belongs-to-many-association

http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

基本上,你有一个用户表,一个技能表和一个第三个表,用于加入具有特定技能的特定用户。

你问题的第二部分很复杂。通过允许用户自由控制在您的系统中输入技能,您将失去一些控制权。这是StackOverflow也必须处理的事情。这里通过主持人和社区编辑来解决,这可以帮助个人在SO中帮助学分。

根据您正在构建的系统类型,您需要付费版主来严格控制所有内容的工作方式,或者向社区开放,以便他们能够将其投入使用他们想要它的方式。这两者都有其优点和缺点,但如果没有完全控制技能列表,你就不能摆脱重复或非常相似技能的问题,应该是同样的事情。