In other words, you just use def get_payment_types if get_payment_types is to be performed on a specific instance of that class, and def self.get_payment_types if it is just a generic function for that class...
E.g. def get_payment_types ... end pt = PaymentType.new pt_types = pt.get_payment_types -or- def self.get_payment_types ... end pt_types = PaymentType.get_payment_types On Jul 12, 7:40 pm, Frederick Cheung <[email protected]> wrote: > On Jul 13, 12:36 am, Buzz Hill <[email protected]> > wrote: > > > > > class PaymentType < ActiveRecord::Base > > > def self.get_payment_types > > payment_types_all = find(:all, :select => "display_name, > > stored_name" , :order => :display_name) > > # Creates a nested array of [[display_name, > > stored_name],[display_name, stored_name]] > > payment_types = payment_types_all.map {|item| [item.display_name, > > item.stored_name]} > > end > > > # must be defined after the method. Can't be defined in a method > > PAYMENT_TYPES = get_payment_types > > > end > > > Here is some code that works fine, but I don't understand the need for > > the self reference in the def, I will get an undefined variable or > > method error. > > in a nutshell def self.get_payment_types tells ruby to make a class > method (which is basically a single method on the class object, ie > self) rather than an instance method. > > Fred > > > I don't understand why I need the self when I am inside the class and I > > don't understand if I need the self, why I can't use > > self.get_payment_types > > > Thanks > > -- > > Posted viahttp://www.ruby-forum.com/. > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" 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/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---

