我正在观看 Code School Rails 测试类(class)。有一个 zombie
类的实例。 zombie
模型有一个方法:
def avatar_url
...
end
在测试中,
.rb
文件具有以下内容:z.avatar_url
Model.method
而不是 object.method
。 更新:
让我们以 String 类为例,它不是一个模型,对吧?
所以我可以说:
s = String.new
s.capitalize
如果这个调用没有转到模型而不是 Controller ,那么它会去哪里?在 Rails 目录中,像 String 这样的类应该在哪里定义?
最佳答案
Controller 内部的方法只能通过 URL 调用。
例子:
/things/super_action
应该在
def super_action
中调用 ThingsController
。至于模型方法,它们可以在任何地方访问。请注意它们是实例方法还是类方法:
Model.ultra_method
这是一个类方法调用,它可能被定义为
def self.ultra_method
。m = Model.new
m.instance_method
这是一个实例方法调用,它可能被定义为
def ultra_method
。更新
String
是 core
语言的 ruby
类。 Array
、 Number
等也是如此。在您的示例中,您正在创建 instance
的 String
并调用 instance method
类的 String
。关于ruby-on-rails - Rails Controller /模型方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18636116/