我正在尝试选择a.blocked?(p)返回false的所有配置文件!
但是我收到了错误。
p = self.find_by_email(email)
all.find_by { |a| a.blocked?(p) }.order('random()')
undefined method `take' for #<ActiveRecord::QueryMethods::WhereChain:0x00000107609598>
答案 0 :(得分:0)
find_by
不会占用块,而是采用散列,数组或字符串的形式。请参阅文档:http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by
如果您无法在SQL中复制blocked?
,那么您必须在Ruby中进行过滤,如:
all.find_all { |a| a.blocked?(p) }.shuffle
因为它在Ruby而不是SQL中进行过滤和排序,所以它会更慢。