Development/위클리 개발 로그

2월 2주차 (190203~190209)

1. Rails 다중 기준 정렬 이슈 (외래키 & 특정일에서 정렬)

  • 자주 쓰던 acts_as_list 젬으로 해결하려고 시도
    이 젬으로 정렬의 기준인 scope를 다중으로 걸 수 있는데 문제는 references 키만 가능해보였다.
    원했던 상황은 references 키와 특정 date를 조건으로 정렬해야 하는 상황인데 적합해 보이지 않았다.

  • ranked-model을 써보라는 댓글이 있었다... 만 제대로 분석하지 않았다.

    위 젬은 그러한 경우를 해결해준다는 내용이 있었는데 build failing 보고 쫄아서 사용 안했다.

  • 그래서 기존의 ruby 코드를 사용했다.

      def return_array(array_of_ids)
         Model.where(id: array_of_ids).index_by(&:id).values_at(*array_of_ids)
      end

    이 코드는 문제없지만 리턴 값이 그냥 array라서 active_record로 나오게 처리하는 방법을 찾아봐야겠다.

2. table 드래그해서 ordering 하는 UI 만들기

  • jQuery-ui/sortable 로 구현하려다가 ui가 깨져서 다른 라이브러리를 찾아봤다.

  • table-dragger 를 사용했다. 여전히 깨지지만 위의 라이브러리보다 좋아서 이걸로 사용!

    도큐먼트 내용대로 구현했다.

3. Rails 모델에 enum 컬럼 한글화 처리

  • rails에서 사용하는 enum의 데이터를 I18n 처리를 하고 싶었다.
    방법은 여러가지가 생각났지만 가장 rails스러운 방법이 무얼까 고민하다가 ko.yml 을 사용해서 구현했다.

  • config/locales/ko.yml

      ko:
        enum:
          user:
            expert: 전문가
            requester: 의뢰자
  • model/exam.rb

      ROLE_ARY = %w(requester expert)
      ROLE_HASH = Hash[ROLE_ARY.collect{ |role| [I18n.t("enum.user.#{role}"), role] }]
      # {"전문가" => "expert", "의뢰자" => "requester"}
      enum role: ROLE_ARY

    직접 짠 방법으로 처리했는데 분명 더 좋은 방법이 있을 듯 하다.

4. Rails ajax 처리법 2가지

  • rails에서 ajax를 처리하는 방식과 jQuery ajax에서 처리하는 방법은 리턴 값을 처리하는 방식이 다르다.
    그 부분을 고민해봤다.

  • 결과값 Json으로 넘기고 Done으로 처리

      [...]
      render json: @user, status: :ok
  • respond_to 사용해서 .js 에서 처리

      [...]
      respond_to |format|
          format.js
      end