我有所有使用一种方法但参数不同的控制器动作。我可以重构它以某种方式使用before_filter
吗?
def usd_cash
transaction_currency("USD cash")
end
def usd_bank
transaction_currency("USD bank")
end
def rub_bank
transaction_currency("RUB bank")
end
private
def transaction_currency(currency)
@transactions = Transaction.where(location: "#{currency}")
end
您可以使用一些元编程,但是它不如您当前所拥有的可读性高:
%i(
usd_cash
usd_bank
rub_bank
).each do |method|
define_method method do
transaction_currency(method.to_s.split('_').instance_eval {first.upcase + ' ' + last})
end
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句