检查字段包含在ROR的另一个列表中 [英] Check a field is contains in another list in ROR

查看:95
本文介绍了检查字段包含在ROR的另一个列表中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个名为 @domianskill_technical_skills 的列表。该表是 domain_skills technical_skills 数据的相关表,并根据 domain_skill_id

I have a list called @domianskill_technical_skills. This table is related table for domain_skills and technical_skills data and is retrieved based on domain_skill_id

我需要返回 technical_skills 表中的所有技术技能,但还有一个名为 assigned 的属性,如果 technical_skill_id 出现在 @domianskill_technical_skills 列表中。

I need return all technical_skills from the technical_skills table but have one more attribute named assigned which is true if the technical_skill_id is present in the @domianskill_technical_skills list.

我的工作代码如下

def assigned_technical_skills

      @domain_skill_technical_skills = DomainSkillsTechnicalSkill.select('id, technical_skill_id').where(domain_skill_id: params[:domain_skill_id])

      Rails.logger.info(@domain_skill_technical_skills.to_a)

      TechnicalSkill.all.where(record_status: 1).each do |skill|

        if @domain_skill_technical_skills.include?(skill.id) then
          Rails.logger.info(skill.id.to_s + skill.name)
        end

      end

      respond_with @domain_skill_technical_skills
  end

请指导我纠正if语句,还需要选择所需的字段(id,名称,已分配)并创建一个实例以返回。

Please guide me to correct the if statement and also need to select the needed fields (id, name, assigned) and create one instance for return.

推荐答案

如果DomainSkillsTechnicalSkill具有 technical_skill_id列,则您可能希望以此替换代码

You might want to replace your code with this, if DomainSkillsTechnicalSkill has 'technical_skill_id' column

def assigned_technical_skills
  # just collect technical_skill_id 
  @domain_skill_technical_skill_ids = DomainSkillsTechnicalSkill.select('id, technical_skill_id').where(domain_skill_id: params[:domain_skill_id]).collect(&:technical_skill_id)
  Rails.logger.info(@domain_skill_technical_skill_ids.to_a)
  @technical_skills = []  
  TechnicalSkill.select('id, name').where(record_status: 1).each do |skill|

    @technical_skills << skill.as_json.merge!(
      { assigned: @domain_skill_technical_skill_ids.include?(skill.id)}
    )       
  end
  respond_with @technical_skills
end

这篇关于检查字段包含在ROR的另一个列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆