Rails5 앱에서 간단한 검색 엔진을 구현하려고합니다.SQL 쿼리 작성
기본적으로 양식에 여러 필드가 있으며 모든 입력 값과 일치하는 모든 레코드를 가져와야합니다. 모든 값은 선택 사항입니다.
내가 검색 할 수있는 값은 name
, description
, created_at
입니다.
제 아이디어는 각 값에 대한 절을 만든 다음 함께 결합하는 것입니다.
이제class EmployeeSearch < ApplicationRecord
self.table_name = 'employees'
def results
# MAGIC HAPPENS HERE
end
private
def table
Employee.arel_table
end
def name_condition
table[:name].eq(name)
end
def description_condition
table[:description].matches("%#{description}%") unless description.blank?
end
def created_at_condition
...
end
end
EmployeeSearch.new(name: 'John Doe', created_at: '01/01/2010')
, 어떻게 results
및 체인입니다 where
절에 각각의 모든 조건을 통해 I 루프?
나는
methods.grep(/_condition$/).map { |c| where(send(c)) }
또는 이와 유사한 같은 것을 생각하지만 난 그것이 작동 할 수 없습니다.
제안 사항?
감사합니다.
내 솔루션에서 누락 된 것이 관계를 반환하고있었습니다. 'methods.grep (/ _ condition $ /). 주사 (직원) do | klass, condition | klass = klass.where (send (condition)) end' – macsig