Buzz Hill wrote: [...] > The syntax of a.PAYMENT_TYPES won't work. I am not sure if you meant it > to work or you were just using it for the sake of explanation.
I meant "assuming proper definition such that it *would* work, how would you want it to behave?". It's possible to get it to work, just unnecessary. [...] > Without trying to be arguementative, Ruby won't allow this. > > class PaymentType > > def payment_types This syntax defines an instance method. > ["Check", "Credit Card", "Purchase Order"] > end > > PAYMENT_TYPES = payment_types This syntax calls a class method, since we're outside of any method definition here. > > end > > This will error: NoMethodError Right. You're defining an instance method, then trying to call a class method that you haven't defined. For this to work, you'd need to do PAYMENT_TYPES = @some_instance.payment_types. > > But I get your point, which has enhanced my understanding. Things that > relate to the class in general, things that shouldn't be redefined, like > Math:PI are controlled only by class methods. Sort of. I was more trying to say that while you could set up instance constants, there is no point. > So, in the above example, > if the payment_types were to change dynamically as the program executed, > I would not use a constant, I would setup getter and setter methods. It's not so much about changing dynamically as it is about whether the property conceptually belongs to the class or the instance. Do you understand the difference between class and instance attributes? It sounds like you don't, or else this would all be clear to you. [...] >> Sure there is: self.class::CONSTANT. > > Again, this syntax won't work, if using self.payment_types > > pt = PaymentType.new > pt.PaymentType::PAYMENT_TYPES > > Error: NoMethodError: undefined method ‘PaymentType’ Yes. That's not what I said. I said pt.class::PAYMENT_TYPES, which will absolutely work. pt.PaymentType will look for an instance method called PaymentType, which you haven't defined. Best, -- Marnen Laibow-Koser http://www.marnen.org [email protected] -- Posted via http://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 -~----------~----~----~----~------~----~------~--~---

