【发布时间】:2017-09-04 07:49:01
【问题描述】:
在我的表 professional_infos 表中有一个列 primary_skill_ids 存储特定用户的一系列技能。我想列出所有具有某些特定技能的用户。 示例 -
user1 has primary_skill as ["1","3","5","9","4"]
user2 has primary_skill as ["1","7","9","4"]
user3 has primary_skill as ["1","4","11"]
user3 has primary_skill as ["7","9","4"]
user4 has primary_skill as ["1","7","9"]
user5 has primary_skill as ["7","9"]
现在我想执行一个搜索,比如让我所有拥有任何或所有技能 primary_skill_ids 的用户为 ["1","4]
请帮我写一个 Rails 查询。
我做了如下的事情
wildcard_search = "%#{params[:search_title]}%"
# key skills and best in search
@key_skills=[]
@key_skills.each do | sk |
# here I am thinking of looping through the ids and do a where clause on column primary_skill_ids but dont know its good idea
end
【问题讨论】:
-
我正在做一个搜索功能。我已经定义了专业信息和技能之间的关联
-
你能展示你的模型和/或数据库架构吗? “存储技能数组的一列primary_skill_ids”听起来更像是一个序列化的字符串而不是一个关联。
-
这就是为什么我说“你应该改用多对多关系”。如果您在应用程序中处理数据,则序列化列很好。它们不打算通过 SQL 处理。
-
“我不能回去” – 为什么不呢?编写迁移和调整代码可能需要一些时间,但肯定会有所回报。
标签: mysql sql ruby-on-rails ruby ruby-on-rails-4