2016-04-09 29 views
0

此代碼是爲ActiveAdmin編寫的,但實際上並不重要。 我如何優化它?謝謝。重構一個選項散列是如何從另一個構建的

module ActiveAdminSimpleMenu 
    # in options can take: 
    # menu_priority:integer 
    # menu_parent:string 
    # permitted_params:array for some additions to main_fields permitted params 

    def simple_menu_for(klass, options = {}) 
    ActiveAdmin.register klass do 
     menu_options = {} 
     menu_options[:priority] = options[:menu_priority] if options[:menu_priority] 
     menu_options[:parent] = options[:menu_parent] if options[:menu_parent] 
     menu menu_options unless menu_options.empty? 
     permit_params(*(klass.main_fields + (options[:permitted_params] ? options[:permitted_params] : []))) 
     ... 

回答

2

我認爲「優化」你的意思是重構。您可以

  • 使用Hash#slice(Rails的方法)來構建menu_options
  • 消除雙重否定用ifany?
  • 使用||測試options[:permitted_params]

一起:

def simple_menu_for(klass, options = {}) 
    ActiveAdmin.register klass do 
    menu_options = options.slice(:menu_priority, :menu_parent) 
    menu menu_options if menu_options.any? 
    permit_params(*(klass.main_fields + (options[:permitted_params] || []))) 
    ... 
+0

謝謝,男人! –

相關問題