#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 можете ли вы опубликовать модели, имеющие ассоциации, указанные в качестве обновления?