
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…
Nenhum comentário em "Torne seus métodos de pesquisa menos poderosos"
Deixe o seu comentário!