Как получить общее количество параметров в rails

#ruby-on-rails

#ruby-on-rails

Вопрос:

У меня есть модель пользователя, и у каждого пользователя есть имя модели «ваучер»

и ваучер «посетил»

 user has_many :voucher
voucher has_many :visited
 

Мой вопрос в том, как получить общее количество посещений от пользователя.

Я пытался <%= @user.vouchers.visited.count %> , но это не сработало.

Спасибо

Комментарии:

1. Я думаю, вы имеете Visit в виду, а не Visited то, что не является хорошим названием модели, поскольку оно не является существительным (модели представляют вещи, а не состояния).

Ответ №1:

Это не работает, поскольку voucher это связь, и visisted связь существует только в экземпляре.

 @user.vouchers.first.visited
 

Вы могли бы ввести отношение «имеет много сквозных» для пользователя, например

 class User
  has_many :voucher
  has_many :visited_voucher, through: :voucher
end

user.visited_voucher.count
 

Если вы не хотите вводить другое отношение, вы можете просто создать запрос в своем контроллере, например

 visited_voucher_count = Visit.where(
  voucher_id: user.voucher
).count
 

https://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

Ответ №2:

 #user.rb
has_many :vouchers
has_many :visited, through: :vouchers

#vouchers
has_many :visited
 

Чтобы получить общее количество visited объектов под пользователем, вызовите
user.visited

Комментарии:

1. я получил ошибку неинициализированный постоянный пользователь :: посещенный

2. @GarbelaGarbela можете ли вы опубликовать модели, имеющие ассоциации, указанные в качестве обновления?