2017-02-17 12 views
0

Я в настоящее время метод с большим количеством жестких Params, что я хочу, чтобы сократить:Лучший способ очистить/укоротить метод слишком много Params и по-прежнему соблюдать строгую/без недостающую Params

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

Я м мышление группируя их вверх в хэш так:

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