Является ли объект в данной коллекции? - PullRequest
2 голосов
/ 18 февраля 2010

Допустим, у меня есть приложение для блога. На каждый пост есть комментарии.

Итак, у меня есть коллекция комментариев в «Post.comments»

Допустим, у меня есть объект с именем "this_comment"

Есть ли в Ruby магическое ключевое слово или конструкция, которую я могу проверить "is 'this_comment" в "Post.comments"?

Другими словами, я хочу знать, является ли "this_comment" членом коллекции "Post.comments". Я мог бы сделать 'найти' и получить свой ответ, но похоже, что Ruby может легко сделать это с помощью классного ключевого слова, например "if this_comment.in (Post.comments)"

Полагаю, если нет, я мог бы просто написать свой собственный метод "in" для "Comment" (или метод "is_in", так как я думаю, что "in" - зарезервированное ключевое слово).

Спасибо!

Ответы [ 2 ]

6 голосов
/ 18 февраля 2010

В качестве массива вы можете сделать

[:a, :b, :c].include?(:a)

Но ActiveRecord делает несколько классных вещей, чтобы сохранить ваши запросы в здравом уме, если вы имеете дело с моделями. Предполагая, что комментарии являются именованными областями или ассоциациями, которые вы можете сделать:

Post.comments.exists?(this_comment.id)

именованные области и ассоциации могут иметь почти все методы класса Activerecord, вызываемые на нем

1 голос
/ 18 февраля 2010

Как вы определили связь между «постом» и «комментариями»? Сообщение has_many Комментарии?

Если это так, попробуйте .exists?().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...