TIL

# 211203 TIL ([Ruby, slim] DB 데이터 참조해서 화면에 나타내기, DB 데이터 쿼리)

장기현장실습

PLSnote 이슈

#2644 그룹에 탈퇴신청을 하고 일정기간이 지나면 탈퇴가 되는 기능이 필요 이슈 추가진행 

  • 장기미사용 기능과 코드를 합치는 과정에서 탈퇴 신청일 부분이 날아간  하여 화면에 나타나지 않는다고  
    • 기존에는 group_users table이 업데이트 되는 날짜로 참조했었는데, 다른 컬럼이 생기면서 updated_at이 탈퇴 신청일이라는 보장이 없게 되었다. 따라서 탈퇴 신청하는 job이 생긴 날짜 컬럼인 created_at  활용해 해당 날짜가 나오도록 수정했다. 
      - if group.group_users.find_by(user_id: user.id).withdraw_from_user 
        .badge.badge-light.mt-1 
          = "#{t('group_manager.users.index.application_date_for_withdrawal')} #{l Sidekiq::ScheduledSet.new.find_job(group.group_users.find_by(user_id: user.id).job_id).created_at, format: :short}"
      탈퇴신청일 UI 추가

 

 

#2678 노트작성 버튼이 나타나는 곳을  확대하고자 합니다 이슈 진행중 

  • 맵/본부/팀 에서  노트작성시 나타날 프로젝트 리스트 쿼리중 
    • 이슈맵일 때의 쿼리를 진행 -
      • 선택한 팀의 프로젝트 리스트를 가져와야 한다. 근데 어떤 프로젝트 리스트냐면 확인전 이슈가 있는 프로젝트 리스트를 가져와야한다. 그러기 위해서  팀의 project_id를 가져와야 하는데 issues 테이블에는 team_id가 없어서 교차하는 부분이 없다. 그래서 team_id가 있는 issue_team_orders 테이블에 접근했다. 근데  문제가 이슈는 할당된 팀을 계속 변경할  있다.. 그래서  마지막(현재)으로 할당된 팀의 이슈를 가져와야 하는.. 그런 문제가 있었다. 이와 관련된 컬럼으로는 order가 있어서 이를 활용했다. 
      • 일단 현재 팀이 가지고 있는 이슈 issue_id를 (중복제거) 모아서 반복문을 돌렸다. issue_team_orders에서 하나의 issue_id로 쿼리해서  결과들을 order 컬럼 값으로 오름차순 정렬하고 그 중 맨 마지막 값만 가져왔다. 그렇게 하면 현재 할당된 이슈를 가져온 것인데  팀이 우리가 선택한 팀과 같은지 비교해서 맞으면  issue_id를 저장하는 형태로 쿼리했다.
        # issue_data = []: 현재 선택된 팀의 이슈 리스트 (이슈 아이디) 
        issue_data=[]
        
        team.issues.pluck(:id).uniq.each do |issue| 
          @current_issue_team_orders = IssueTeamOrder.where(issue_id: issue) 
          @current_issue_team_orders = @current_issue_team_orders.order(order: :asc).last() 
          if (@current_issue_team_orders.team_id == team) 
            @issue_id = @current_issue_team_orders.issue_id 
            issue_data = issue_data.push(@issue_id) 
          else 
            break 
          end 
        end
      • 반복문이 끝나면 issue_data 배열에 값이 저장될 것이다. 그 값들도 반복문을 돌려서 issues 테이블에서 id가 배열에 저장된 issue_id이고, 확인전 이슈인지 체크하는 status: :open_issue인 것을 조건으로 쿼리한다. 그리고 나서  결과의 project_id만 가져와  project_id인 프로젝트만 가져온다. 그렇게 프로젝트 리스트를 뽑아낸다.
        # project_data = []: 선택된 팀의 이슈 리스트 중에 확인전 이슈의 프로젝트 아이디 
        project_data=[] 
        
        if issue_data.present? 
          issue_data.each do |data| 
            @project_id = team.issues.where(id: data, status: :open_issue).pluck(:project_id) 
            project_data = project_data.push(@project_id) 
          end 
        end 
         
        where(id: project_data)

 

SNU 성문분석 이슈

#49 서버 접속 방법 선택 시 hover 영역 수정 이슈 (완료) 

  • 완전히 중앙을 맞추면 왼쪽으로 이동하는 현상이 발생되어, 왼쪽 버튼과 오른쪽 버튼이 겹치지만 않도록 마무리하였다.