Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在ruby中搜索逗号分隔的单词_Ruby On Rails_Activerecord_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 如何在ruby中搜索逗号分隔的单词

Ruby on rails 如何在ruby中搜索逗号分隔的单词,ruby-on-rails,activerecord,ruby-on-rails-5,Ruby On Rails,Activerecord,Ruby On Rails 5,我想列出具有关键技能的候选项(例如:想列出具有css、html或css5等关键技能的候选项)。 有一个候选表和一个Keykill和CandidateKeySkills表 添加的Keyskills以属性名存储在Keyskills表中。在候选密钥技能表中,存储候选密钥id和密钥杀死密钥id 我的候选人模型关系 candidate has_many :candidate_key_skills, dependent: :destroy has_many :key_skills, through:

我想列出具有关键技能的候选项(例如:想列出具有css、html或css5等关键技能的候选项)。 有一个候选表和一个Keykill和CandidateKeySkills表

添加的Keyskills以属性名存储在Keyskills表中。在候选密钥技能表中,存储候选密钥id和密钥杀死密钥id

我的候选人模型关系

candidate 
 has_many :candidate_key_skills, dependent: :destroy
  has_many :key_skills, through: :candidate_key_skills
end

class CandidateKeySkill < ActiveRecord::Base
  belongs_to :candidate
  belongs_to :key_skill
end

class KeySkill < ActiveRecord::Base
  belongs_to :candidate
  has_many :candidate_key_skills
  has_many :candidates, through: :candidate_key_skills 
end
它确实列出了具有这些按键技能的候选项的计数。
请帮我做这件事。

奇怪,因为您似乎可以使用
candidate.key\u skills.map{key | key.name}.join(“,”
行中的
candidate
的值

但如果仍需要实现此类查询,则需要在表达式中使用

Candidate.joins(:key_skills).where('key_skills.name IN (?)', @c_skill_name.split(','))
或者更简单一些:

Candidate.joins(:key_skills).where(key_skills: { id: candidate.key_skills_ids })

为什么您不只是使用
候选人。关键技能
?你似乎在四处奔波,只是为了得到简单使用的结果。在你处理这个问题的方式中有很多问题。您可能希望提供更多有关系统中与b/w候选人和关键技能之间关系的详细信息。而且,
like
query也不是这样工作的。你可能在
(数据库级别)中寻找
。我只是想得到这样的“@c_skill_name=“css”,“css5”,“html”而不是“@c_skill_name=“css,css5,html”@SRack实际上我缩短了我的查询。实际上查询是这样的。”候选。加入(:key_skills,:Candidate_key_skills)。包括({Candidate:Candidate:[:rate_card,:category,:company,:city,:key_skills]})。其中('key_skills.name like?',“{@c_skill_name}”)”
@c_skill_name=“css”,“css5”,“html"
很可能做不到你认为的事情。先加入,然后分裂?不做任何事情不是很容易吗?:)谢谢。真的很高兴。事实上,对于某个特定的候选人,我想这样做。所以我尝试了另一种方法。@SergioTulentsev我根本不明白为什么需要搜索,因为他在be有
候选人
金宁。哦,也许需要找到所有相似的候选人?@zanadto:是的,看起来“找到相似的”我仍然认为这会产生与调用
候选人相同的结果。关键技能
完全是浪费时间。
Candidate.joins(:key_skills).where('key_skills.name IN (?)', @c_skill_name.split(','))
Candidate.joins(:key_skills).where(key_skills: { id: candidate.key_skills_ids })