Skip to content
Snippets Groups Projects
  • Akihiko Odaki's avatar
    64ef37b8
    Introduce ApplicationController#cache_collection_paginated_by_id (#14677) · 64ef37b8
    Akihiko Odaki authored
    * Replace incorrect use of distinct with group
    
    Some uses of ActiveRecord::QueryMethods#distinct pass field names but they
    are incorrect for the current version of Rails.
    
    ActiveRecord::QueryMethods#group provides the expected behavior and
    benefits performance. See commit 6da24aad4cafdef8d8a2c92bac2002a5fc2fe9c8.
    
    * Introduce ApplicationController#cache_collection_paginated_by_id
    
    ApplicationController#cache_collection_paginated_by_id fuses
    ApplicationController#cache_collection and Paginable.paginate_by_id.
    
    An advantage of this method is that it prevents from modifying scope which
    Paginable.paginate_by_id may provide.
    ApplicationController#cache_collection always return an array and there
    is no possibility of the scope modification. It is also clear for a
    programmer, considering the implication of "cache".
    
    This method can also emit more efficient queries by using
    Cacheable.cache_ids before calling Paginable.paginate_by_id.
    Introduce ApplicationController#cache_collection_paginated_by_id (#14677)
    Akihiko Odaki authored
    * Replace incorrect use of distinct with group
    
    Some uses of ActiveRecord::QueryMethods#distinct pass field names but they
    are incorrect for the current version of Rails.
    
    ActiveRecord::QueryMethods#group provides the expected behavior and
    benefits performance. See commit 6da24aad4cafdef8d8a2c92bac2002a5fc2fe9c8.
    
    * Introduce ApplicationController#cache_collection_paginated_by_id
    
    ApplicationController#cache_collection_paginated_by_id fuses
    ApplicationController#cache_collection and Paginable.paginate_by_id.
    
    An advantage of this method is that it prevents from modifying scope which
    Paginable.paginate_by_id may provide.
    ApplicationController#cache_collection always return an array and there
    is no possibility of the scope modification. It is also clear for a
    programmer, considering the implication of "cache".
    
    This method can also emit more efficient queries by using
    Cacheable.cache_ids before calling Paginable.paginate_by_id.