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 . |