Отображение количества различных идентификаторов из нескольких таблиц с отношением HMT в Ruby on Rails

#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
endclass 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) %>