필터링 기능의 파이프 라인에 ActivRecord :: Relation을 전달하는 복잡한 ActiveRecord 쿼리를 작성하고 있습니다. 그들 중 하나는 일련의 "또는"연결된 조건을 추가해야합니다. ActiveRecord :: Relation은 #or 메서드를 제공하지 않으므로 #where로 전달할 SQL 문자열을 작성하고 있습니다. 이 문자열은 동적으로 생성되므로 실제로 사용할 수 없습니까? 값. 이전 질문에서 준비된 문을 사용하는 것이 쿼리를 만드는 가장 좋은 방법이라는 것을 알고 있지만 여기에 적용 할 방법을 찾을 수 없습니다.준비된 문을 사용할 수없는 ActiveRecord에서 이스케이프 문자열
문자열을 이스케이프 처리하거나 준비된 명령문을 사용하여 변환하는 방법이 있습니까?
편집 :. 나는 이런 식으로 뭔가를 (방법은 액티브 :: 관계 객체로 항목을 수신
where_string = '';
filters.each do |field,value|
if(Item.column_names.include? field)
where_string += "OR" if where_string!=''
where_string += " #{field} LIKE '%#{value.to_s}%'"
end
return items.where(where_string)
정확한 검색어를 입력하십시오. – user2801
@ user2801 질문 샘플을 사용하여 질문을 수정했습니다. 전에 질문이 불분명 한 경우. – andreimarinescu