在实例化类中找不到方法(Ruby/Rails)



所以我的背景是Java,你可以这样创建一个类。

TestClass x = new TextClass();

,并像

x.shout ();

我试图在ruby中做一些类似的事情,没有这样的外观。这可能是语法问题,也可能是我不太理解ruby和rails的概念。

服务器上有一个Ruby

class myResource< ActiveResource::Base
  self.site = "http://localhost:3008"
  def self.shout
    puts "I AM AN ACTIVE RESOURCE SHOUT!"
    puts " CAPS RAGE YEAH!"
    puts Time.now
  end
end

位于客户端。

与服务器上的活动记录相同的类:

class myRecord < ActiveRecord::Base
  def self.shout
  puts "I AM AN ACTIVE RECORD SHOUT!"
  puts " CAPS RAGE YEAH!"
  puts Time.now
  end
end

所以这是我尝试的结果。

服务器在rails控制台:

?> myRecord.shout
I AM AN ACTIVE RECORD SHOUT!
 CAPS RAGE YEAH!
Wed Jul 13 10:17:33 +0100 2011
=> nil
>> 

但是在客户端,

myResource.shout
NoMethodError: undefined method `shout' for myResource:Class
    from (irb):206
>>

在我看来,这是没有意义的,因为它们几乎相同,应该这样称呼。

如果我将它们实例化为

@test = myResource or myRecord.new(blah blah blah)

当我写@test.shout

我得到了相同的未定义方法

我对Ruby中对象的概念已经被打破了。有谁能告诉我哪里做错了吗?

Ruby类总是大写的。此外,在类中声明常规方法时也不引用self。

这是你想要的:

class MyRecord 
    def shout
        puts "I AM AN ACTIVE RECORD SHOUT!"
        puts "CAPS RAGE YEAH!"
        puts Time.now
    end
end

然后按你想要的方式运行:

> MyRecord.new.shout
=> "I AM AN ACTIVE RECORD SHOUT!"
=> "CAPS RAGE YEAH!"
=> 2011-07-13 06:35:18 -0400

最新更新