AR::Base.with_scope

Hej!

jak czesc uzytkownikow tego forum ucze sie Rubiego/RoR, chcialem dokladnie zrozumiec jak dziala with_scope z AR, po przeczytaniu paru artykulow i obejrzeniu railcasta ± kojarze o co chodzi (; jednak dla pewnosci spojrzalem w kod… W pierwszej linii metody znalazlem

method_scoping = method_scoping.method_scoping if method_scoping.respond_to?(:method_scoping)

zaden modul nie jest dolaczany a hash rozszerzany jest przez

require 'active_support/core_ext/hash/deep_merge' require 'active_support/core_ext/hash/indifferent_access' require 'active_support/core_ext/hash/slice'
i od razu pojawia sie pytanie – skad nagle metoda metdhod_scoping w hashu? Na pewno to wielkie przeoczenie z mojej strony jednak wdzieczny bede za pomoc (:

[quote=kbl]method_scoping = method_scoping.method_scoping if method_scoping.respond_to?(:method_scoping)
i od razu pojawia sie pytanie – skad nagle metoda metdhod_scoping w hashu? Na pewno to wielkie przeoczenie z mojej strony jednak wdzieczny bede za pomoc (:[/quote]
ale już ScopedAccess::MethodScoping posiada metodę method_scoping, która to zwraca hasha. Możesz zatem zrobić tak:

Member.with_scope(MethodScoping.new(:group_id=>1)) do Member.find(:all) Member.create(...) end
Do poczytania:
http://www.caboo.se/articles/2006/2/22/nested-with_scope

pozdrawiam

ps. dobry avatar :slight_smile: