Ruby 检查一个字段是否包含在ROR中的另一个列表中

Ruby 检查一个字段是否包含在ROR中的另一个列表中,ruby,ruby-on-rails-4,contains,Ruby,Ruby On Rails 4,Contains,我有一个名为@domianskill_technical_skills_的列表。此表是域技能和技术技能数据的相关表,根据域技能id检索 我需要返回technical_skills表中的所有technical_skills,但还有一个名为assigned的属性,如果technical_skill id出现在@domianskill_technical_列表中,则该属性为true 我的工作代码如下所示 def assigned_technical_skills @domain_skil

我有一个名为@domianskill_technical_skills_的列表。此表是域技能和技术技能数据的相关表,根据域技能id检索

我需要返回technical_skills表中的所有technical_skills,但还有一个名为assigned的属性,如果technical_skill id出现在@domianskill_technical_列表中,则该属性为true

我的工作代码如下所示

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、名称、分配并创建一个用于返回的实例。

如果DomainSkillsTechnicalSkill有“technical\u skill\u id”列,您可能希望用此替换代码

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

//应变为“感谢”,但表中未指定字段。我需要补充一下。现在我在“字段列表”中得到了未知列“分配”。另外,我只得到了映射数据。@Akhil更新了答案,你能检查一下吗?@PramodShinde我刚刚检查了一下,得到了错误NoMethodError undefined方法'merge!'用于:。而且我认为您只选择映射的技术技能。我需要所有的技术技能,但分配给我的是真实的,其他的是真实的false@PramodShinde谢谢。它适用于映射数据,但我需要所有的技术技能。如果未找到映射数据,我需要将“指定字段”设置为false。请引导