如何为所有查询结果调用函数?

时间:2015-09-03 16:18:14

标签: ruby-on-rails-4

我正在尝试为where查询

产生的所有对象调用函数

这样的事情:

User.where('email LIKE ?', '%@domain.org').skip_confirmation!

这样做的正确方法是什么?为查询产生的所有对象调用函数?

2 个答案:

答案 0 :(得分:1)

User.where('email LIKE ?', '%@domain.org')返回一个arel关系,但你可以在其上调用大多数Array方法,所以你可以这样做:

User.where('email LIKE ?', '%@domain.org').each &:skip_confirmation!

如果您希望查询返回大量结果,请改用.find_each

答案 1 :(得分:1)

这是一种调用ar​​el

的方法
User.where('email LIKE ?', '%@domain.org').each(&:skip_confirmation!)

如果您想要更优化的代码,请将查询移至scope,然后按以下方式调用

scope :by_email, -> {where('email LIKE ?', '%@domain.org')}  

User.by_email.each(&:skip_confirmation!)