是给定集合中的对象吗?

jef*_*unt 2 ruby ruby-on-rails

假设我有一个博客应用程序.在每个帖子上都有评论.

所以,我在"Post.comments"中收集了一些评论

假设我有一个名为"this_comment"的对象

在Ruby中是否有一个神奇的关键字或构造,我可以在'Post.comments'中测试"是'this_comment'吗?

换句话说,我想知道"this_comment"是否是"Post.comments"集合的成员.我可以做一个'发现'并得到我的答案,但看起来Ruby可以通过一个很酷的关键字,如"if this_comment.in(Post.comments)"轻松实现

我想如果没有,我可以为"评论"(或"is_in"方法,我认为''是保留关键字)编写我自己的"in"方法.

谢谢!

Ale*_*yne 6

作为阵列,你可以做到

[:a, :b, :c].include?(:a)
Run Code Online (Sandbox Code Playgroud)

但是,如果你正在处理模型,ActiveRecord会做一些很酷的事情来保证你的查询正确.假设comments是命名范围或某种关联,您可以这样做:

Post.comments.exists?(this_comment.id)
Run Code Online (Sandbox Code Playgroud)

命名范围和关联可以拥有几乎所有调用它的Activerecord类方法