Я хочу подсчитать количество элементов в массиве, указывающем c на идентификатор пользователя, а затем отобразить это число. Массив last_viewed отслеживает событие, которое последний раз посетил пользователь.
schema.db выглядит так (это не вся схема, которую я только что включил, что, по моему мнению, необходимо для решения моей проблемы).
create_table "users", id: :serial, force: :cascade do |t|
t.integer "last_viewed", default: [], array: true
end
Я пробовал
<%= ((Users.last_viewed.where("id = ?", current_user.id)).count) %>
, но мне кажется, что last_viewed - это метод, а не часть таблицы Users.
Я знаю, как использовать реальный SQL, но эти запросы в Ruby on Rails сбивают с толку. По сути, я хочу превратить этот код SQL во что-то, что работает на Ruby.
SELECT array_length(u.last_viewed, 1)
FROM users u
WHERE u.id = <user's id>;