【发布时间】:2011-07-13 10:27:27
【问题描述】:
所以我来自 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 中的对象的概念被打破了。有人对我在这里做错了什么有任何建议吗?
【问题讨论】:
-
您的代码根本不应该工作。类名必须以大写字母开头。
-
@dogbert。你好。我喜欢你的漫画。他们原来的课程确实以大写字母开头。我正在匆匆写下这个问题并没有发现。道歉
标签: ruby-on-rails ruby oop activerecord activeresource