정수를 반환하는 모델에서 메서드를 정렬하는 방법을 알아 내려고하고 있습니다.ransack 정수를 반환하는 모델 메서드로 정렬
ransack을 사용하여 내 테이블에 questions_count
메서드로 정렬 할 수 있습니다.
나는 행운이없는 <th><%= sort_link @q, :questions_count %></th>
을 사용해 보았습니다.
이것도 가능합니까? 그것을 어떻게 성취 할 수 있습니까?
정수를 반환하는 모델에서 메서드를 정렬하는 방법을 알아 내려고하고 있습니다.ransack 정수를 반환하는 모델 메서드로 정렬
ransack을 사용하여 내 테이블에 questions_count
메서드로 정렬 할 수 있습니다.
나는 행운이없는 <th><%= sort_link @q, :questions_count %></th>
을 사용해 보았습니다.
이것도 가능합니까? 그것을 어떻게 성취 할 수 있습니까?
sort_link 도우미 메서드는 속성 또는 연관 속성 만 수락 할 수 있지만 간단한 레코드 수를 계산하려면 기존 레일 메커니즘을 사용하면됩니다.
가장 쉬운 방법은 counter_cache
을 사용하는 것입니다.이 방법은 연결된 모델에 속한 개체의 수를 계산하는 방법입니다. 이 실제로이의 이름을 사용자 정의 할 수 있습니다, 그것은 또한 그러나, questions_count
라는 비즈니스 테이블에서 데이터베이스 컬럼을 필요로
has_many :questions, counter_cache: true
을 (그리고 :이 같은 비즈니스 모델에 연관이를 추가해야합니다 sort_link 메소드에 많은 수의 질문을 전달할 수있게 해줍니다.)
일단 이것이 설정되면 문제없이 sort_link 도우미 메서드를 호출 할 수 있어야합니다.
sort_link @q, :questions_count
counter_cache here에 대해 자세히 알아보십시오.
또는이를 달성하기위한 또 다른 방법이 있습니다. 대신 ransacker
을 정의 할 수 있습니다. 이 함수를 사용하여 비즈니스에 관련된 모든 질문에 대해 COUNT 함수를 수행 할 수있는 SQL 문을 명시 적으로 작성할 수 있지만 counter_cache 메소드와 같은 편리한 솔루션이라고는 생각하지 않습니다. 주로 SQL 문이 questions_count 메소드 기능을 재정 의하여/대체하기 때문입니다.
ransackers에 대한 자세한 정보 here.
예, @collection.sort_by{|item| item.method_name}
과 같은 것을 사용하여 정렬 할 수 있습니다. "@collection"을 항목 집합으로 바꾸고 "method_name"을 정렬 할 메서드로 바꿉니다.
이것은 횡설수설을 사용하지 않고 있지만 .... – Deekor
@collection은 샅샅이 검색 한 결과입니다. Model.search (params)와 같은 것 .sort_by {| item | item.method_name} –
하지만 그 때마다 정렬됩니다, 나는 그것이 단지 정렬 링크를 클릭하면 정렬 싶어요. – Deekor