Pesquisar

Currículo e bio do autor Casal de artigos relacionados com o meu hobby - robótica
Minhas impressões sobre a imigração para a Austrália. Em russo apenas. Receitas para resolver problemas cotidianos
Linux lugares ligados Windows lugares ligados
Software lugares ligados Um monte de informações sobre hardware
Diferentes ferramentas podem ser úteis Mensagens sobre tecnologias web vários
Tudo o que não se encaixa no resto do menu RSS feed para este blog

Tag Cloud

Arquivo

Links

Blog do Andrey Mikhalchuk

English flagItalian flagKorean flagChinese (Simplified) flagPortuguese flagGerman flagFrench flagSpanish flagJapanese flagRussian flagDanish flagFinnish flagHebrew flag

Technoblog sobre a vida

2 de julho, 2010 Ruby on Rails: como substituir default_scope - uma melhor abordagem

Já usou default_scope em RoR? Já se arrependeu você já tinha lido sobre esse recurso depois que você escreveu toneladas de código e, mais tarde percebi que você não pode acessar os registros que você precisa em uma forma conveniente quando necessário? Tente googling "como substituir default_scope" e você vai encontrar toneladas de conselhos como fazê-lo com model.send (: with_exclusive_scope) {super}, mas nenhuma maneira real como cancelá-lo completamente para um modelo quando você realmente precisa dele (como em testes por exemplo). Aqui está uma solução simples e alguns conselhos sobre esta misfeature:


Diga, você tem
class Foo < ActiveRecord::Base
default_scope :conditions => { "0" }
end

E em algum lugar em seu código que você precisa para cancelar a default_scope. Aqui está o código:
RecurringDonationSchedule.send( :default_scope, {} )

default_scope é apenas um método protegido de ActiveRecord :: Base, assim você pode chamá-lo com enviar e corrigir o seu erro anterior (que está usando default_scope de tal forma).

Eu acho que você já percebeu que default_scope é uma má idéia, em muitos casos, apesar de named_scope é uma idéia brilhante. Ainda assim, usando default_scope poderia ser uma boa idéia se você usá-lo para a classificação, só não usá-lo para a filtragem. Espero que remover esta misfeature nas versões futuras do Rails.

Este post foi publicado em Outros , Web .

Sem comentários

Nenhum comentário até o momento

Deixe uma resposta

Mapa do Site (C) Andrey Mikhalchuk, 2005-2008