ActionArgs makes the Rubyish Code

今日お仕事で出した ActionArgs をもちいたコントローラに対するリファクタリングの code snippet となる。当然コードは改変しているが意図としては以下のようなものとなる。

 class MusicsController < ApplicationController
+  permits :title, :artist, :genre

   def index
   end

-  def create
-    @music = Music.new(music_params)
+  def create(music)
+    @music = Music.new(music)
   end
-
-  private
-
-  def music_params
-    params.require(:music).permit(:title, :artist, :genre)
-  end
 end

Rails の scaffold なんかで作ったコントローラで、StrongParameters まわりが private メソッドに切り出されているベタな形のコードが、ActionArgs の permits をもちいることで宣言的記述に置き換えたシュッとしたコードになる。何ヶ月か前に amatsuda に教えてもらった書き方。

cf. https://github.com/asakusarb/action_args#strongparameters---permit