我想要一行红宝石(不使用each
)来回答这个问题:这个数组中是follower_id
2397558816
吗?
myArray = [ #<Follower id: 1, username: "Prep Bootstrap", imageurl: "http://pbs.twimg.com//profile_images/2825468445/2a4...", user_id: "thefonso", follower_id: "2397558816", created_at: "2014-05-21 15:29:03", updated_at: "2014-05-21 15:29:03">, #<Follower id: 2, username: "JAVA Developer", imageurl: "http://pbs.twimg.com//profile_images/2825468445/2a4...", user_id: "thefonso", follower_id: "2352382640", created_at: "2014-05-21 15:29:05", updated_at: "2014-05-21 15:29:05"> ]
我确信必须有一个ruby方法或组合这样做才能做到这一点。可以这样做吗?
答案 0 :(得分:1)
你采用了正确的方法:使用Enumerable#any?
:
myarray.any? { |v| v.follower_id == 2397558816 }
答案 1 :(得分:0)
(myArray.select {|elem| elem.instance_variable_get(:@id) == 1234567}) != []
如果数组包含具有给定id的元素,则返回true,否则返回false
答案 2 :(得分:0)
注意:此答案基于假设它是ActiveRecord关系。如果不是,请发表评论,我将删除此答案。
这不是一个简单的数组,它是ActiveRecord::Relation
对象,它是数组的包装器。您几乎不应该在其上使用纯数组对象,因为此类负责从数据库中提取对象。使用any?
将从db获取所有记录,然后迭代搜索匹配。相反,您应该在db lavel上检查它以限制获取的记录数(性能):
relation.exists?(follower_id: 2397558816)