I’m trying to override some method of a class. I’ve created an
acts_as_money method. The first parameter is the method name that
should be overridden. For example:
I have a model with an attribute “amount”. I want to be able to do
this:
acts_as_money :amount
Then the amount method should be aliased to an already defined method
in the plugin.
I’ve got this code now: http://pastie.caboo.se/63676
But then I get this error: NameError: undefined method amount' for classDeclaration’
And the Declaration model HAS a method amount. Does anyone now how I
can solve this problem?
dec = Declaration.new
NameError: undefined method amount' for classDeclaration’
from ./script/…/config/…/config/…/vendor/plugins/
acts_as_money/lib/acts_as_money.rb:12:in instance_method' from ./script/../config/../config/../vendor/plugins/ acts_as_money/lib/acts_as_money.rb:12:inacts_as_money’
from ./script/…/config/…/config/…/app/models/declaration.rb:
19
from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:203:in load_without_new_constant_marking' from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/ active_support/dependencies.rb:203:inload_file’
from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:342:in new_constants_in' from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/ active_support/dependencies.rb:202:inload_file’
from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:94:in require_or_load' from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/ active_support/dependencies.rb:248:inload_missing_constant’
from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/
active_support/dependencies.rb:452:in const_missing' from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/ active_support/dependencies.rb:464:inconst_missing’
from (irb):1
Let’s say you need to provide the raw column value for some reason.
read_attribute is private so you can’t use it, plus it breaks
encapsulation, plus it’s just ugly (d.send :read_attribute,
:amount. bleh)
Go ahead and define an accessor method that does read_attribute for you: