我想列出候选项,计算那些拥有键杀的人(例如:想列出具有键杀的候选项,如css、html或css5)。
有一个候选表和一个keyskill和candidatekeyskills表。
添加的keyskills存储在具有属性名的keyskills表中。在候选项_key_skills表中,存储候选项_id和keyskill_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
我在视图页面中得到了这样的候选人数量。但是在keyskill名称搜索部分,SQL是错误的。
<% @candidates.each do |candidate| %>
<% @c_skill_name = candidate.key_skills.map{|key| key.name}.join(",") %>
<% @keyskills = Candidate.joins(:key_skills,:candidate_key_skills).includes({candidate: [:rate_card, :category, :company, :city, :key_skills]}).where('key_skills.name like ?',"#{@c_skill_name}") %>
<% count = @keyskills.count %><%end %>
SQL输入终端
SELECT COUNT(*) FROM `candidates`
INNER JOIN `candidate_key_skills` ON `candidate_key_skills`.`candidate_id` = `candidates`.`id`
INNER JOIN `key_skills` ON `key_skills`.`id` = `candidate_key_skills`.`key_skill_id`
INNER JOIN `candidate_key_skills` `candidate_key_skills_candidates` ON `candidate_key_skills_candidates`.`candidate_id` = `candidates`.`id`
WHERE (key_skills.name like 'css,css5,html')
它列出了具有这些键的候选项的数量。
请帮我做这个。