Carlos Brando

Nome do Jogo

Torne seus métodos de pesquisa menos poderosos


Em um post mais antigo citei um exemplo de uso do método with_scope. Hoje enfrentei um caso onde eu queria fazer exatamente o contrário, impedir que alguém usasse um with_scope no meu método.

Pesquisando nas bibliotecas do Rails descobri que existe um método chamado with_exclusive_scope.

Básicamente ele faz o mesmo que o with_scope, mas ignora todas as outras chamadas de with_scope que estiver acima dele. Como sempre, um pedaço de código vale mais do que mil palavras:

[source:ruby] Mail.with_scope(:find=>{:conditions=>”user_id = …”}) do count = Mail.count # => SELECT COUNT(*) FROM mails WHERE user_id = … Mail.with_exclusive_scope({}) do

count = Mail.count   # => SELECT COUNT(*) FROM mails

end end [/source]

Mais uma vez fica bem claro porque Ruby on Rails nos torna programadores tão felizes.

PS: Quero deixar aqui apenas uma nota de agradecimento ao Akita, por algumas dicas que me concedeu na sexta-feira. Espero estar com novidades para contar em breve…

Comments