2016-08-08 3 views
3

내 응용 프로그램에서 검색 메커니즘 용 덩굴 젬을 사용하고 있습니다. 내가 직면하고있는 문제는 내 모델에서 내가 우연히 날짜 검색이 작동하지 않고 날짜 기준으로 비교를 수행 할 수없는 문자열 필드로 "날짜"열을 만들었습니다. 열의 데이터 유형이 문자열이므로 짬통은 적절한 결과를 가져 오지 않습니다.Ransack 문자열로 검색 날짜를 입력하십시오.

@q = MyModel.order(id: :desc).ransack(params[:q]) 
@records = @q.result(distinct: true) 

나는이 테이블에 실제 데이터 톤이 있으며 마이그레이션을 작성하여 위험에 노출되기를 원하지 않습니다. 도움이 될 것입니다

답변

1

간단한 해킹을 사용하면 문자열을 데이터베이스 수준의 데이터로 변환 할 수 있습니다. 모델을 아래에 추가해야합니다.

ransacker :name_of_your_column_to_d do 
    Arel.sql("cda") 
end 

컨트롤러에서 다음과 같이 변경됩니다.

# You can use DESC id if you want to change order. 
@q = YourModel.ransack({s: "id DESC"}.merge(params[:q] || {})) 

@q.result(distinct: true).select("*, to_date(\"your_model_table_name\".\"your_date_column_name\", 'MM/DD/YYYY') as cda, your_model_table_name.id") 

추가 도움이 필요하면 알려주세요.

관련 문제