Как использовать включить? в рельсах - PullRequest
0 голосов
/ 26 апреля 2020

надеюсь, тривиальный вопрос для мастеров в SO. Как бы я использовал ruby? чтобы увидеть, если владелец комментария поста включает current_user? Например, этот код работает нормально, но я пытаюсь найти включение? метод, эквивалентный проверке, включен ли пользователь. Большое спасибо заранее!

# Brief has many Submissions
brief = Brief.first
user = User.first
brief.submissions.where('submissions.user': user) # works as expected and retrieves the correct Submission
brief.submissions.include?(user: user) # false but should return true

1 Ответ

2 голосов
/ 26 апреля 2020

Результатом where является ActiveRecord_Relation, где каждый элемент внутри является экземпляром того же класса, которым определен получатель, то есть каждый элемент в brief.submissions.where('submissions.user': user) является экземпляром представления

In Для того чтобы include? вернул true, вы должны передать объект, который является экземпляром Submission. То, что вы сейчас передаете, - это Ha sh.

. Чтобы решить эту проблему, попробуйте вместо этого brief.submissions.include?(user).

Но, если ваш запрос делает то, что он значит, тогда вы получаете не пользователей как результаты, а представления, которые фильтруются тем пользователем, которому они принадлежат. Таким образом, в любом случае, независимо от того, какого пользователя вы передадите, он вернет false.

Я рекомендую вам использовать exists?, если вы ожидаете получить только предикатное значение:

brief.submissions.exists?('submissions.user': user)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...