Rails控制台参数错误创建新对象

时间:2018-01-12 21:10:45

标签: ruby-on-rails ruby object

我是Rails和Ruby开发的新手,但我正在尝试创建一个名为Currency的对象,它接受两个参数并对它们进行一些计算。我使用attr_accessor来设置参数,然后将文件放在lib目录中。

每当我运行rails console并尝试c = Currency.new(100, "CAD")时,我都会收到以下错误:

ArgumentError: wrong number of arguments (given 2, expected 0)
from (irb):5:in `initialize'
from (irb):5:in `new'
from (irb):5

我确实将文件包含在application.rb中。这是我班级的骨架:

class Currency
  class << self
    attr_accessor :input_value, :currency_iso

    USD_ISO = "USD"
    USD_TO_DM = 2.8054

    def converted_value
     convert_to_dm
    end

    private

    def convert_to_dm
     @input_value / USD_TO_DM
    end
  end
end

我看了一遍,我对这个问题感到困惑。我尝试过使用和不使用初始化方法,我尝试创建一个更基本的版本。

1 个答案:

答案 0 :(得分:2)

这里的问题是您将方法定义为类方法。而且你没有用这两个参数定义初始化方法。我们来看看下面的代码:

class Currency
  attr_accessor :input_value, :currency_iso

  USD_ISO = "USD"
  USD_TO_DM = 2.8054

  def initialize(input_value, currency_iso)
    @input_value = input_value
    @currency_iso = currency_iso
  end

  def converted_value
    convert_to_dm
  end

  private

  def convert_to_dm
    input_value / USD_TO_DM
  end
end

此外,由于您已经定义了attr_accessor,因此在调用这些属性时无需使用@

我发现了post。它可以帮助您更好地理解类方法和实例方法之间的区别。