De Ontmaskering van with_options

Geplaatst door Michiel de Mare wo, 01 maa 2006 06:38:00 GMT

Als je herhaaldelijk op hetzelfde object verschillende methoden uitvoert die als laatste argument een hash met opties hebben waarvan een of meer steeds hetzelfde zijn (maar niet allemaal, want dan kun je beter steeds dezelfde hash gebruiken) – dan biedt with_options uitkomst.

De instance methode with_options van Object neemt twee parameters (het object , en de opties die constant blijven) en een block.

Het block wordt vervolgens aangeroepen met als argument het oorspronkelijke object in een wrapper die alle method-calls ondervangt en de extra opties – indien mogelijk – aan de laatste methode-parameter toevoegt.

Voorbeeld:
  Person.find(:all, :offset => 10, :limit => 10)
  Person.find(:all, :offset => 10, :limit => 10, :include => [ :account, :friends ])
  Person.find(:all, :offset => 10, :limit => 10, :group => "category")
wordt dit:
  Person.with_options(:offset => 10, :limit => 10) do |p|
    p.find(:all, {})
    p.find(:all, :include => [ :account, :friends ])
    p.find(:all, :group => "category")
  end

PS: Dit zou een geweldige refactoring zijn in IntelliJ. Zo eentje die je met alt-enter kunt laten uitvoeren. Extract options

Geplaatst in ,  | geen reacties

Reacties

(Laat url/e-mail achter »)

   Voorvertoning