Мені подобається чистота коду, добре реалізовано фільтрацію.
Загалом все виконано вірно, є лише декілька мінорних коментарів
[x] щодо серіалізації, у active model serializer є певна особливість, він серіалізуватиме дані за замовчуванням, базуючись на назві, якщо вона включає назву моделі, тобто в index екшні у вас викликатиметься Api::V1::ArticleSerializer серіалайзер.
Уникнути цього можна, створивши окремо серіалайзер для індексу, наприклад Api::V1::ArticlesSerializer
[x] before_action :set_article, only: %i[ show show_last_10_comments update destroy ]
для масивів, на відміну від хешу, за стайл-гайдом ми не додаємо empty space. before_action :set_article, only: %i[show update destroy]. Також методу show_last_10_comments немає в контролері, не забувайте прибирати методи, що не використовуються, з before actions
[x] щодо меседжу за умови відсутності articles.
зазвичай відправляються лише серіалізовані дані, якщо масив буде порожнім - це буде опрацьовано на клієнті. Головна умова при роботі з api - відправляти однаково оформлений респонз.
if @articles.blank?
render json: { message: "Not found" }
else
render json: @articles
end
коли ми пишемо таку умову - на клієнті нам потрібно також писати умову, брати message або масив записів. Краще не ускладнювати і повернути просто render json: @articles
[x] для скоупу sort_by_asc_desc думаю варто змінити назву, що очевидно вказуватиме на те, що сотруємо ми за тайтлом. Або спробувати зробити скоуп універсальним та додатково передавати ще й назву поля, за яким сортуватимемо.
Мені подобається чистота коду, добре реалізовано фільтрацію. Загалом все виконано вірно, є лише декілька мінорних коментарів
[x] щодо серіалізації, у active model serializer є певна особливість, він серіалізуватиме дані за замовчуванням, базуючись на назві, якщо вона включає назву моделі, тобто в index екшні у вас викликатиметься
Api::V1::ArticleSerializer
серіалайзер. Уникнути цього можна, створивши окремо серіалайзер для індексу, наприкладApi::V1::ArticlesSerializer
[x]
before_action :set_article, only: %i[ show show_last_10_comments update destroy ]
для масивів, на відміну від хешу, за стайл-гайдом ми не додаємо empty space.
before_action :set_article, only: %i[show update destroy]
. Також методуshow_last_10_comments
немає в контролері, не забувайте прибирати методи, що не використовуються, з before actionsзазвичай відправляються лише серіалізовані дані, якщо масив буде порожнім - це буде опрацьовано на клієнті. Головна умова при роботі з api - відправляти однаково оформлений респонз.
коли ми пишемо таку умову - на клієнті нам потрібно також писати умову, брати
message
або масив записів. Краще не ускладнювати і повернути простоrender json: @articles
sort_by_asc_desc
думаю варто змінити назву, що очевидно вказуватиме на те, що сотруємо ми за тайтлом. Або спробувати зробити скоуп універсальним та додатково передавати ще й назву поля, за яким сортуватимемо.