使用太多参数来清理/缩短方法的最佳方法仍然执行严格/非缺失的参数

时间:2017-02-17 04:33:59

标签: ruby-on-rails ruby ruby-on-rails-5 ruby-2.0

我目前有一种方法,我想缩短很多严格的参数:

build_receipt(order_id:, order_rate:, ..... invoice_id:, invoice_date:...)
.
.

我正在考虑将这些分组为哈希,如下所示:

build_receipt(order_details: {}, invoice_details: {})

任何人都知道一个理智的方式,我可以做上述同时仍然抛出一个错误,每当一个参数丢失而没有明确地必须逐行写入上述哈希中的每个键的验证(或者如果有更好的方法,以上方法可以缩短)?

1 个答案:

答案 0 :(得分:0)

您可以继续并计算传入的密钥数量,并且没有缺失值:

def build_receipt(order_details={}, invoice_details={})
  return if order_details.merge(invoice_details).keys.count != 5 or order_details.merge(invoice_details).values.any?{|v| v.nil? }
  #do something
end