Ruby 检查一个字段是否包含在ROR中的另一个列表中
我有一个名为@domianskill_technical_skills_的列表。此表是域技能和技术技能数据的相关表,根据域技能id检索 我需要返回technical_skills表中的所有technical_skills,但还有一个名为assigned的属性,如果technical_skill id出现在@domianskill_technical_列表中,则该属性为true 我的工作代码如下所示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
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。请引导