Introduce ApplicationController#cache_collection_paginated_by_id (#14677)
* 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.
Showing
- app/controllers/accounts_controller.rb 8 additions, 4 deletionsapp/controllers/accounts_controller.rb
- app/controllers/activitypub/outboxes_controller.rb 6 additions, 2 deletionsapp/controllers/activitypub/outboxes_controller.rb
- app/controllers/api/v1/accounts/statuses_controller.rb 6 additions, 5 deletionsapp/controllers/api/v1/accounts/statuses_controller.rb
- app/controllers/api/v1/notifications_controller.rb 3 additions, 5 deletionsapp/controllers/api/v1/notifications_controller.rb
- app/controllers/api/v1/timelines/public_controller.rb 9 additions, 7 deletionsapp/controllers/api/v1/timelines/public_controller.rb
- app/controllers/api/v1/timelines/tag_controller.rb 6 additions, 11 deletionsapp/controllers/api/v1/timelines/tag_controller.rb
- app/controllers/concerns/cache_concern.rb 4 additions, 0 deletionsapp/controllers/concerns/cache_concern.rb
Please register or sign in to comment