2015-09-03 57 views
1

我想呼籲所有對象的功能源於where查詢如何爲所有查詢結果調用函數?

事情是這樣的:

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

什麼是這樣做的正確方法?調用查詢產生的所有對象的函數?

回答

1

這是調用方法的AREL

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

的方式,如果你想更優化的代碼,然後將查詢移入scope然後調用如下

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

User.by_email.each(&:skip_confirmation!) 
+0

PS:我不認爲'by_email'在這裏是個好名字。 – Robin

+0

你可以建議一個合適的名字,謝謝:) –

1

User.where('email LIKE ?', '%@domain.org')返回AREL關係,但你可以調用它的最陣列的方法,所以你可以做:

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

如果你希望你的查詢返回結果噸的,使用.find_each代替。