Conversation
app/controllers/books_controller.rb
Outdated
| @@ -0,0 +1,9 @@ | |||
| class BooksController < ApplicationController | |||
| def index | |||
| books = Book.all.order(:created_at).limit(::Settings.app.items_per_page) | |||
There was a problem hiding this comment.
можно опустить all
Book.order(:created_at).limit(::Settings.app.items_per_page)
app/controllers/books_controller.rb
Outdated
| def index | ||
| books = Book.all.order(:created_at).limit(::Settings.app.items_per_page) | ||
| page = params[:page].to_i | ||
| books = books.offset(page * ::Settings.app.items_per_page) if page > 1 |
There was a problem hiding this comment.
Еще немного смущает BooksController#index и вот этот участок кода:
books = Book.all.order(:created_at).limit(::Settings.app.items_per_page)
page = params[:page].to_i
books = books.offset(page * ::Settings.app.items_per_page) if page > 1Может, конечно, у меня уже деформация ), но просится упаковать это в метод вида
pager(Book, params[:page].to_i)
Но заранее согласен, что тут три строки и выделение такого объема в метод или сервис-объект избыточно, нам просто придется нырять в новый файл, чтобы узнать что там происходит. Возможно дело в слишком длинном и повторяющемся ::Settings.app.items_per_page и достаточно его просто упаковать в отдельный private-метод
def per_page
::Settings.app.items_per_page
endи оставшийся код станет более компактным
books = Book.order(:created_at).limit(per_page)
page = params[:page].to_i
books = books.offset(page * per_page) if page > 1Плюс хочется все-таки определение books в одну строку уложить... например мы можем под page выделить метод
def page
[params[:page].to_i, 0].max
endтогда этот участок можно переписать так
books = Book.order(:created_at)
.limit(per_page)
.offset(page * per_page)
No description provided.