所以,我意识到Rails不支持将块传递给模型上的函数。我应该如何检索具有包含某个给定元素的数组属性的所有对象?
答案 0 :(得分:0)
where
方法的目的是为ActiveRecord生成的SQL查询添加WHERE
子句 - 它不对结果执行任何过滤:
Post. # initializes query: SELECT * FROM `posts`
where(author_id: 42). # adds: WHERE `posts`.`author_id` = 42
to_a # <-- it's only here that the query is executed
如果您必须使用块过滤结果集,则必须首先执行查询 以在数组中获取结果,然后使用{{1过滤该数组的方法:
select
显然,如果你有很多记录,这将是非常慢,因为你的应用程序必须从数据库中获取每个记录,反序列化它们的数组属性并检查每个记录的过滤器标准。
文档链接: