2016-04-09 3 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

私はリファクタリングを意味する "最適化"と推定します。あなたはmenu_options

  • を構築するための

    • 使用Hash#slice(Railsの方法)はすべて一緒にoptions[:permitted_params]

    をテストするためにifany?

  • 使用||を使用して二重否定を排除することができます

    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

    ありがとう、男! –

    関連する問題