Forum: Ruby on Rails Plugin Namespace Oddities?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Matthew B. (Guest)
on 2006-06-05 20:32
(Received via mailing list)
Hi all,

I'm trying to throw together an acts_as_copyable, to add the ability to:

  @new_ar_object = @ar_object.copy

I'm using the Fox example for the basic loading into AR with a module:

  http://wiki.rubyonrails.org/rails/pages/HowToWrite...

so in my instance methods:

      module InstanceMethods
        def copy( options = {} )
          copyable_attributes = self.attributes
          copyable_attributes.delete 'id'
          options.each do |key, value|
            next if key.class == String
            options.delete key
            options[key.to_s] = value
          end
          copyable_attributes.merge! options
          logger.info self.class.to_s
          new_copy = self.class.send :new, copyable_attributes
          new_copy.save
        end
      end

Originally I was calling self.create, but that failed as well.  Rails is
tossing my to an error page claiming:

  undefined method `datatype' for false:FalseClass

however, in my log, the self.class.to_s is Datatype, which should load
the
Datatype class.  IRB shows this:

  irb(main):001:0> class Foo
  irb(main):002:1> def hello
  irb(main):003:2> puts 'hello
  irb(main):004:2' '
  irb(main):005:2> end
  irb(main):006:1> def self.whoa
  irb(main):007:2> puts 'whoa'
  irb(main):008:2> end
  irb(main):009:1> end
  => nil
  irb(main):010:0> a = Foo.new
  => #<Foo:0x402d862c>
  irb(main):011:0> a.send :hello
  hello
  => nil
  irb(main):012:0> a.send :whoa
  NoMethodError: undefined method `whoa' for #<Foo:0x402d862c>
          from (irb):12:in `send'
          from (irb):12
          from :0
  irb(main):013:0> a.class.send :whoa
  whoa
  => nil

So, why doesn't self.class.send work the same in a rails plugin?  Why is
Datatype being changed to datatype, and being called as a method, not a
class definiton?

Thanks,

--
Matthew B. :: 607 227 0871
Resume & Portfolio @ http://madhatted.com
This topic is locked and can not be replied to.