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