Как вывести всех пользователей кто лайкнул заказ?

Для лайков используется гем acts_as_votable (https://github.com/ryanto/acts_as_votable).
Для вывода используется запрос <%= @booking.votes_for.voters.each do |v| %><% end %>.
Но что в браузере, что в консоли rails запрос к заказу выводит квадратные скобки [].
[26] pry(main)> book.votes_for
=> []


А такой вывод, когда кто-либо лайкнул:
[27] pry(main)> book.votes_for.voters
ActsAsVotable::Vote Load (9.5ms) SELECT votes.* FROM votes WHERE votes.votable_id = 35 AND votes.votable_type = 'Booking'
User Load (2.0ms) SELECT users.* FROM users WHERE users.id IN (51)
=> [# id: 51, 
email: "user@example.com", 
encrypted_password: "$2a$10$BWOeIRguEHIzkUj0Cx/QfOdhMu.QbRLlkZx7sBaTPEhGtCerehSfy",
reset_password_token: nil, 
reset_password_sent_at: nil,
remember_created_at: nil, 
sign_in_count: 6,
current_sign_in_at: Sat, 09 Jan 2016 01:28:27 UTC +00:00,
last_sign_in_at: Fri, 08 Jan 2016 20:54:28 UTC +00:00, 
current_sign_in_ip: "127.0.0.1",
last_sign_in_ip: "127.0.0.1", 
created_at: Thu, 03 Dec 2015 10:11:03 UTC +00:00, 
updated_at: Sat, 09 Jan 2016 01:28:27 UTC +00:00, 
name: "Буба", 
confirmation_token: "nkiXZeja8MB_KycryxpA",  
confirmed_at: Thu, 03 Dec 2015 10:12:11 UTC +00:00, 
confirmation_sent_at: Thu, 03 Dec 2015 10:11:03 UTC +00:00,
unconfirmed_email: nil, 
avatar_file_name: "N9WpwqK.jpg", 
avatar_content_type: "image/jpeg", 
avatar_file_size: 126608, 
avatar_updated_at: Sat, 09 Jan 2016 01:21:58 UTC +00:00, 
balance: nil, surname: "Хуга", 
is_female: false, 
banned: false, 
birthday: Mon, 09 Jan 1950, 
votes_count: nil, 
rating_id: nil, 
category_id: 1, 
subcategory_id: 2, 
cities_id: nil, 
city_id: 3, 
country_id: 2, 
karma: 0, 
phone: nil, 
role: "Клиент", 
phone_number_id: nil>]


Кто сталкивался с такими глюками?
  • Вопрос задан
  • 228 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Renius
дурак восторженный
1) В документации не сказано что `fotes_for` что-то должен выводить, кроме квадратных скобок, которые называются пустым массивом
2) насколько я вижу `fotes_for` может быть как промежуточным scope-ом так и любой другой сущностью возвращающей все что угодно

Таким образом, я не вижу здесь ни неожиданного поведения, поскольку ожидаемое поведение описано в документации плохо, ни глюков.

И мне вот не совсем понятно, вы пишите:
@booking.votes_for.voters.each
потом пишите, что book.votes_for => []
а потом пишите, что book.votes_for.voters => коллекция юзеров
В своих примерах вы к разным объектам применяете разные цепочки методов и получаете разные результаты - вполне ожидаемо.
А вы ожидали какое поведение?
Ответ написан
@Atom777
Проще простого. Просто ссылку кнопки заказов ставите не прямую, а через редирект (дополнительную страницу). Т.е. в доп. стр. ставите редирект с счетчиком переходов. Сам код редиректа найдете легко, он очень маленький и, вариантов вроде 5 или 6, точно не помню. Вариантов реально много, хоть на html, хоть на php или на javascript. Удачи.
Ответ написан
monaxide
@monaxide Автор вопроса
DevOps
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы