我有两种方法。
def response_code_description(code)
@response_code_description ||= current_account.one_call_center.response_codes_repository_class.new.to_api_collection
@response_code_description.find {|k| k['code'] == code}.try(:[], 'description')
end
def ticket_response_code_with_description(ticket_response)
@ticket_response_code_with_description ||= ticket_response.ticket.one_call_center.response_codes_repository_class.new.to_api_collection
@ticket_response_code_with_description.find { |k| k['code'] == ticket_response.code }.try(:[], 'description')
end
我想我可以将它们结合起来。 如此。
def response_code_with_description(one_call_center, code)
@ticket_response_code_with_description ||= one_call_center.response_codes_repository_class.new.to_api_collection
@ticket_response_code_with_description.find { |k| k['code'] == code }.try(:[], 'description')
end
并调用此方法
response_code_with_description(current_account.one_call_center, ticket_response.code)
response_code_with_description(ticket_response.ticket.one_call_center, code)
你觉得怎么样?
答案 0 :(得分:1)
这两种方法之间的主要区别似乎是这一部分:
k['code'] == code
k['code'] == ticket_response.code
因此换句话说,您可以直接与参数进行比较,也可以在参数上调用code
方法。通过使参数自适应来解决这个问题:
def to_description(code)
code = code.code if (code.respond_to?(:code))
# ... Rest of code presuming `code` is the thing to compare against.
end
这消除了两者之间的差异。
我强烈建议您重新访问代码中使用的名称,这些名称不合理。