Ransack을 사용하면 속성, 조건 자 및 값이있는 조건을 만들 수 있습니다. 그러나 한 속성을 다른 속성과 비교하는 방법에 대한 문서를 찾을 수 없었습니다. 예를 들어, 내가 어떻게에 대한 조건을 만들 수 있습니다 : 나는 꽤 동안 더듬다을 사용하고하나의 속성과 다른 속성을 ransack으로 비교
WHERE column_a < column_b
Ransack을 사용하면 속성, 조건 자 및 값이있는 조건을 만들 수 있습니다. 그러나 한 속성을 다른 속성과 비교하는 방법에 대한 문서를 찾을 수 없었습니다. 예를 들어, 내가 어떻게에 대한 조건을 만들 수 있습니다 : 나는 꽤 동안 더듬다을 사용하고하나의 속성과 다른 속성을 ransack으로 비교
WHERE column_a < column_b
을,하지만 가능성은 당신이 찾고있는 무엇을 볼 수 없습니다. 당신이 원하는 것은 Rails 나 ActiveRecord가있는 SQL로 생성 될 수있는 "case -> when"문입니다.
Ransack은 속성, 술어 및 값을 정의하여 사용자 정의 SQL 명령을 생성 할 수있는 기능을 제공합니다. 그러면 사용자가 이미 언급 한 WHERE 문으로 변환됩니다. 나는 Ransack에게 당신이 원하는 것을 걸러 내기 위해 직접 말할 수있는 가능성을 보지 못했습니다. 그러나 :
scope :column_b_gt_columnb_a, -> { where('column_b > column_a') }
그리고이 같은 검색 구축 할 수 있습니다 :
이 같은 범위를 만드는 것입니다 수 무엇정말 아마
Object({ column_b_gt_columnb_a: true })
당신이 찾고있는 무엇을, 그러나 나는 생각한다 그게 당신이 얻을 수있는 최선의 ...
그리고 만약 당신이 가치를 비교하거나 위에서 언급 한 문을 사용하여 레일과 함께하고 싶습니다. SQL 문의 예를 들어
Records.each do |i|
case i.variable_a
when i.variable_b
# do something when it's the same
when i.variable_a > i.variable_b
# do something when it's greater
end
end
이 조금 도움이
How do I compare two columns for equality in SQL Server?
희망 여기 봐!
따라서 column_a 및 column_b 속성을 모두 원합니다. 'Person.search ({id_eq : 1}, {name_object : : abcd}). result.to_sql'과는 다릅니다. – Sontya