단일 레코드가 다른 테이블 (ID와 has_many
문으로 링크 됨)에 여러 레코드가 있어야하는 검색을 만들려고합니다. 결과로 포함됩니다.Ruby on Rails : 여러 행이 다른 테이블에 있어야하는 테이블 검색
나는 테이블이 users
, skill_lists
, skill_maps
입니다.
사용자는 skill_maps
테이블의 단일 항목을 통해 개별 기술에 매핑됩니다. 많은 사용자가 단일 기술을 공유 할 수 있으며 단일 사용자는 skill_maps
테이블에서 여러 항목을 통해 많은 기술을 보유 할 수 있습니다.
User_id | Skill_list_id
2 | 9
2 | 15
3 | 9
사용자 2는 기술 9 3 내가 기술의 집합이 모든 사용자의 해시를 반환하는 검색을 만들려고 해요 9
유일한 기술을 가지고 15
사용자가 있습니다. 필요한 집합 skill_ids
은 params에 배열로 나타납니다.
skill_selection_user_ids = SkillMap.find_all_by_skill_list_id(params[:skill_ids]).map(&:user_id)
@results = User.find(:all, :conditions => {:id => skill_selection_user_ids})
문제는이 아닌 그들 모두가 사용자가 이러한 기술 중 하나를 모든 사용자를 반환한다는 것입니다 :
여기 내가 사용하는 코드입니다.또한, 내 사용자 테이블은 skill_lists 테이블 :through => :skill_maps
에 연결되고, 그 반대로 그래서 내가이 진짜 초보자 질문입니다 확신 나는에 완전히 새로운 해요 ...
을 @user.skill_list
등을 호출 할 수 레일 (및 프로그래밍). 검색을 시도했지만 해결책을 찾지 못했습니다. 나는 단 하나 수색 기간에있는 문제를 설명하는 방법을 모릅니다.
작동합니다! 정말 고맙습니다! 이 새 목록으로 사용자 테이블을 검색하려면 먼저 .to_a를 추가해야했습니다. 여기 내 마지막 코드는 다음과 같습니다. 'skill_selection_user_ids = params [: teach_skill_ids] .map {| s | 012 : 사용자 ID => {: id => skill_selection_user_ids.to_a} .resource = User.find (: all, : conditions => {: id => 스킬 _ 선택 _ 사용자 _) ' 다시 한번 감사드립니다 !!! – joshblour
할 수 있습니다 :'@results = User.find skill_selection_user_ids.entries'. '항목'은 집합을 단순히 '찾기'로 피드하는 배열로 변환합니다. – dynex
도 그 덕분에 @dynex! – joshblour