Closed IkumaTadokoro closed 2 years ago
以下試してみたが、かえって複雑になってしまうかも?
# 削除
# def calc
# calculate
# end
private
attr_reader :rate, :age
def calculate
return 0 if age >= 75
limit = rate.send("#{name}_limit")
calculate_result = income_basis + capita_basis + household_basis
calculate_result <= limit ? calculate_result : limit
end
# 追加
alias_method :calc :calculate
public :calc
alias
とpublic
の再定義を行なう(こうしないと親のcalc
が呼び出されてしまい、差分実装が無視されるため)class Simulation::Insurance::Care < Simulation::Insurance::Base
private
def calculate
return 0 if age < 40 || age >= 65
super
end
alias_method :calc :calculate
public :calc
end
2022/04/13 質問タイムで相談した結果
alias
ではないのに、同じような役割・同じような名前のメソッドがあると意図が分かりづらい
calc
も呼び出せるので微妙(まあ呼び出そうと思えば呼び出せるのはRubyなので...)
https://github.com/IkumaTadokoro/quitcost/blob/main/app/models/simulation/insurance/base.rb#L16
aliasやalias_methodでいいかも?