Onze dagmethode #6: AR.find(..).each
Geplaatst door Remco van 't Veer di, 12 feb 2008 08:00:00 GMT
AR.find(..).each
Wat me vaak dwars zit als ik met ActiveRecord in de weer ben is dat ik na een find-all ook nog eens each
moet schrijven. Sterker nog als ik each
vergeet en er een block aanplak gebeurd daar helemaal niets mee, ook geen foutmelding of iets dergelijks.
Vandaag dus geen methode maar een methode minder!
class ActiveRecord::Base
def self.find_with_block_sensitivity(*args)
r = find_without_block_sensitivity(*args)
[r].flatten.each {|v| yield v} if block_given?
r
end
class << self
alias_method :find_without_block_sensitivity, :find
alias_method :find, :find_with_block_sensitivity
end
end
Hiermee kunnen we ipv:
Article.find(:all).each {|article| puts article.title}
het volgende schrijven:
Article.find(:all) {|article| puts article.title}
Kijk mij! Zonder each
! Werkt voor zowel enkele als meervoudige resultaten.
Als er een block meegegeven wordt, kun je ook standaard voor de map-functie kiezen:
Prachtig!