#ruby-on-rails #ruby
#ruby-on-rails #ruby
Вопрос:
Я пытаюсь отобразить количество всех отдельных стадионов, которые пользователь посетил либо через объект Fixture (который включает столбец stadium_id), либо через объект Stadium.
У меня есть полиморфная таблица с именем Visit, позволяющая пользователям отмечать модели как посещенные. В настоящее время это используется для модели арматуры и стадиона через отношение HMT.
class Visit < ApplicationRecord
belongs_to :user
belongs_to :visited, polymorphic: true
end
class User < ApplicationRecord
has_many :visits
has_many :visited_stadiums, through: :visits, source: :visited, source_type: 'Stadium'
has_many :visited_fixtures, through: :visits, source: :visited, source_type: 'Fixture'
end
В таблице Fixture есть столбец stadium_id.
В моем пользовательском контроллере я хотел бы получить количество всех уникальных стадионов, которые посетил пользователь, либо путем добавления объекта, либо путем добавления самого стадиона через таблицу посещений.
В настоящее время я получаю все отдельные стадионы, которые посетил пользователь, передавая идентификатор стадиона этому вспомогательному методу. Но как я могу также получить все уникальные стадионы, которые пользователи посетили через Fixtures?
module UsersHelper
def get_unique_stadiums_count(object)
object.pluck(:stadium_id).uniq.count
end
class UsersController < ApplicationController
def show
@visitedstadiums = current_user.visited_stadiums.distinct
@visitedfixtures = current_user.visited_fixtures.distinct
end
end
user/show.html.erb
<%= get_unique_stadiums_count(@visitedfixtures) %>