【问题标题】:Cannot add instance method to a Ruby-on-Rails model无法将实例方法添加到 Ruby-on-Rails 模型
【发布时间】:2019-10-18 23:44:12
【问题描述】:

我正在尝试向我的一个模型添加一个新的实例方法。这是模型:

# app/models/server.rb
class Server < ActiveRecord::Base

  def self.zzz()
  end

end

这里是控制器:

class ServersController < ApplicationController

  def new
    @server = Server.new
    @server.zzz
  end

end

当我调用 new 方法时,我收到此错误:

undefined method `zzz' for #<Server:0x0055f64a3c4cb8>

为什么我不能以这种方式向Server 类添加额外的实例方法?我在 Debian 拉伸系统上使用 Rails 4.2。

【问题讨论】:

  • self.zzz() 是类方法而不是实例方法。您可以删除self 并调用实例方法。

标签: ruby-on-rails ruby-on-rails-4


【解决方案1】:

我正在尝试向我的一个模型添加一个新的实例方法。

您添加了一个类方法,但不能在实例上调用类方法(在名称前用self 声明)。您可以像这样直接在类上调用#zzz 方法:

Server.zzz

或将zzz重新定义为实例方法:

def zzz
end

能够在@server 上调用它。

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    相关资源
    最近更新 更多