0

您好我正在尝试在 Rails 中创建一个可以执行两个计算的模型。这是我的代码:

class Calculator
  def initialize(nair, cppy, interest_rate, payment, periods)
    @nair = nair.to_f / 100
    @cppy = cppy.to_f

    @interest_rate = interest_rate
    @payment = payment
    @periods = periods      
  end

  def effective
    Refinance::Annuities.effective_interest_rate(@nair, @cppy)          
  end

  def principal
    Refinance::Annuities.principal(@interest_rate, @payment, @periods)
  end
end

我有两种形式,它们驻留在不同的视图中,它们从用户那里获取输入,其中一个是“nair”和“cppy”,另一个是“interest_rate”、“payment”和“periods”。

我遇到的问题是,要使用这个模型,所有五个参数都需要可用。

我是否需要为每个计算提供单独的模型?

如果有一个非常明显的答案,我很抱歉。

谢谢!

4

1 回答 1

0

可能有十几种不同的方法可以解决这个问题,但一种可能的方法是在初始化方法中使用默认参数。

class Calculator
  def initialize(nair=0, cppy=0, interest_rate=0, payment=0, periods=0)
    @nair = nair.to_f / 100
    @cppy = cppy.to_f

    @interest_rate = interest_rate
    @payment = payment
    @periods = periods      
  end

  def effective
    Refinance::Annuities.effective_interest_rate(@nair, @cppy)          
  end

  def principal
    Refinance::Annuities.principal(@interest_rate, @payment, @periods)
  end
end

另一种可能的解决方案是使它们成为类方法而不处理实例或状态:

class Calculator
  def self.effective(nair, cppy)
    nair = nair.to_f / 100
    cppy = cppy.to_f

    Refinance::Annuities.effective_interest_rate(nair, cppy)
  end

  def self.principal(interest_rate, payment, periods)
    Refinance::Annuities.principal(interest_rate, payment, periods)
  end
end

Calculator.effective(x, y)
Calculator.principal(x, y, z)
于 2013-07-31T12:21:19.753 回答