2017-02-17 62 views
0

我現在有很多的,我想縮短嚴格PARAMS的方法:最好的辦法清理/縮短方法有太多的PARAMS&仍執行嚴格的/非缺失PARAMS

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

我分組這些成散列像這樣m的想法:

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

會有人知道一個理智的辦法,我可以做到上面,同時還拋出每當一個參數是丟失的錯誤沒有明確無需編寫驗證在每一個關鍵上面的代碼逐行排列(或者如果上述方法有更好的方法可以縮短)?

回答

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