您好我正在尝试在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'。
我遇到的问题是要使用这个模型,所有五个参数都需要可用。
每次计算需要单独的模型吗?
如果有一个非常明显的答案,我会完全开始抱歉。
谢谢!
答案 0 :(得分: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)