상태을 기반으로 한 모델에 검색/필터 동작을 구현하려고합니다. status
열은 정수 유형입니다. 나중에 가독성을 위해 다음과 같이 status
열에 enum 데이터 유형을 사용했습니다.enum 상태를 기반으로 activerecord를 쿼리하는 방법은 무엇입니까?
class Production < ApplicationRecord
enum status:{
Preproduction:1,
Postproduction: 2,
Completed:3
}
end
그런 다음 검색/필터 기능을 사용하여 사용자가 지정한 상태를 기반으로 레코드를 가져 오기 시작했습니다.
productions_controller
def filter
if params[:filter]
@productions = Production.where('productions.status like ?', "%#{params[:filter]}%")
else
@productions = Production.all
end
end
보기
<%= form_tag [:filter, :productions], :method => 'get' do %>
<p>
<%= text_field_tag :filter, params[:filter] %>
<%= submit_tag "Filter", :status => nil %>
</p>
<% end %>
지금 내가 텍스트 필드에 1
2
또는 3
같은 정수 값을 입력하면 기록이 제대로 만 조회 할 수 있어요. 할당 된 것처럼 Preproduction
과 같은 상태를 입력하면 결과가 표시되지 않습니다. 빈 페이지가 나타납니다. 이 문제를 어떻게 해결할 수 있습니까? 문자열과 쿼리를 받아들이도록하려면 어떻게해야합니까? 생산에 열거 status
이 상태 해시처럼하지만 기호로 보이는 Production.statuses
문자열로 변경 해시를 가지고, 그래서 당신은이 작업을 수행 할 수