问题描述
我有一个名为 @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的另一个列表中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!