Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
CONST initialization...
Jean Nibee
7/5/2007 7:12:00 PM
How come this works when I access Orders::PAYMENT_TYPES
>>>>>>>>>> CODE
class Order < ActiveRecord::Base
PAYMENT_TYPES = [
[ "Check", "check" ],
[ "Credit card", "cc" ],
[ "Purchase order", "po" ]
]
has_many :line_items
validates_presence_of :name, :address, :email, :pay_type
validates_inclusion_of :pay_type, :in => PAYMENT_TYPES.map {|disp,
value| value}
end
<<<<<<<<<< CODE
But this doesn't:
>>>>>>>>>> CODE
class Order < ActiveRecord::Base
has_many :line_items
validates_presence_of :name, :address, :email, :pay_type
validates_inclusion_of :pay_type, :in => PAYMENT_TYPES.map {|disp,
value| value}
PAYMENT_TYPES = [
[ "Check", "check" ],
[ "Credit card", "cc" ],
[ "Purchase order", "po" ]
]
end
<<<<<<<<<< CODE
Error thrown:
/usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:477:in
`const_missing'
I have moved the PAYMENT_TYPES map around and it even is okay if it's
after the has_many :item_lines accessor, but not if it's after the
'validation' accessors.
Thanks.
--
Posted via
http://www.ruby-...
.
2 Answers
Rob Biedenharn
7/5/2007 7:51:00 PM
0
On Jul 5, 2007, at 3:12 PM, Jean Nibee wrote:
> How come this works when I access Orders::PAYMENT_TYPES
>
> Error thrown:
> /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/
> dependencies.rb:477:in
> `const_missing'
>
> I have moved the PAYMENT_TYPES map around and it even is okay if it's
> after the has_many :item_lines accessor, but not if it's after the
> 'validation' accessors.
>
> Thanks.
I think you've answered your own question, but you might not
understand why. The ruby interpreter is "executing" each line within
the class definition as it is encountered. If there's no
PAYMENT_TYPES when the validates_inclusion_of line is reached, it
really doesn't matter that it *does* appear later in the class
definition.
-Rob
Rob Biedenharn
http://agileconsult...
Rob@AgileConsultingLLC.com
Jean Nibee
7/5/2007 9:13:00 PM
0
Rob Biedenharn wrote:
> On Jul 5, 2007, at 3:12 PM, Jean Nibee wrote:
>>
>> Thanks.
>
> I think you've answered your own question, but you might not
> understand why. The ruby interpreter is "executing" each line within
> the class definition as it is encountered. If there's no
> PAYMENT_TYPES when the validates_inclusion_of line is reached, it
> really doesn't matter that it *does* appear later in the class
> definition.
>
> -Rob
>
> Rob Biedenharn
http://agileconsult...
> Rob@AgileConsultingLLC.com
Doh..
Sorry I"m still in 'vm' world w/ my Java code thinking that a Ruby class
is ONLY a definition, I forget to realize it's being interpreted as it's
being read.
Thanks for the wake up.
--
Posted via
http://www.ruby-...
.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
CONST initialization...
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password