Wasn't named_scope a plugin before it was in 2.1?

On Aug 14, 1:35 pm, ben wiseley <[email protected]> wrote:
> I screwed up my example if it matters... should have gone more like:
>
> Class Area < ActiveRecord::Base
>   def taxes
>     return .1
>   end
>
>   def calc_price(amount)
>      amount + (amount * determine_taxes)
>   end
> end
>
> class InnerCity < Area
>   def self.find(*args)
>     super(args.first,
> args.extract_options!.merge(:conditions=>{:postcode=>[2001, 2002]})
>   end
>
>   def taxes
>      return .5 + new_bridge_tax
>   end
>
> end
>
> Area.new.calc_price(3)
> InnerCity.new.calc_price(3)
>
> etc.
>
> On Thu, Aug 13, 2009 at 8:28 PM, Sonia Hamilton <[email protected]> wrote:
> >  Thanks everyone for all your suggestions. I'm using Ben's method as it 
> > works best for my scenario, but I'll file away the techniques for future 
> > use.
>
> > My old rails doesn't have extract_options, so I broke this up into a few 
> > lines:
>
> >     options = args.last.is_a?(Hash) ? args.last : {}
> >     options = options.merge(:conditions=> ...
> >     super(args.first, options)
>
> > --
> > Sonia Hamilton.
>
> > ben wiseley wrote:
>
> > I think it really depends on what's needed.  If you simply need to filter
> > rows then, yes, the solution below is good.  But, if you need custom logic
> > for InnerCity vs Rural then I'd sub class the models like you originally
> > suggested.
>
> > Class Area < ActiveRecord::Base
> >   def taxes
> >     return .1
> >   end
>
> >   def calc_price(amount)
> >      amount + (amount * determine_taxes)
> >   end
> > end
>
> > class InnerCity < ActiveRecord:Base
> >   def self.find(*args)
> >     super(args.first,
> > args.extract_options!.merge(:conditions=>{:postcode=>[2001, 2002]})
> >   end
>
> >   def taxes
> >      return .5 + new_bridge_tax
> >   end
>
> >   def calc_price(amount)
> >      amount + (amount * determine_taxes)
> >   end
> > end
>
> > etc.
>
> > On Thu, Aug 13, 2009 at 6:27 PM, Dylan Egan <[email protected]> wrote:
>
> >> It would go in the model.
>
> >> class Location < ActiveRecord::Base
> >>  def self.all_from_inner_city
> >>      find(:all, :conditions=>{:postcode=>[2001, 2002]})
> >>   end
> >> end
>
> >> Location.all_from_inner_city
>
> >> or
>
> >> class Location < ActiveRecord::Base
> >>  def self.from_inner_city(*args)
> >>     find(args.first,
> >> (args.extract_options!.merge(:conditions=>{:postcode=>[2001, 2002]}))
> >>  end
> >> end
>
> >> Location.from_inner_city(:all, :order => 'id DESC')
> >> Location.from_inner_city(:first)
>
> >> Cheers,
>
> >> Dylan.
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
or Rails Oceania" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rails-oceania?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to