Rails4のStrong Parameters

Rails4のStrong Parametersに関するメモ。新しくrailsのプロジェクトを作成し、rails generate 〜 すると自動生成されたController内がRails3系の時と変わっていた。生成後のArticlesControllerの一部。コメント等は削除しています。このArticlesControllerはブログのタイトル(title)と記事(content)だけを管理するシンプルなもの。

class ArticlesController < ApplicationController
  before_action :set_article, only: [:show, :edit, :update, :destroy]

  def index
    @articles = Article.all
  end

(省略)

  def create
    @article = Article.new(article_params)
    if @article.save
      redirect_to @article, notice: 'Article was successfully created.'
    else
      render action: 'new'
    end
  end

(省略)

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_article
      @article = Article.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def article_params
      params.require(:article).permit(:title, :content)
    end
end

以前は、article_params なんてprivate method はなかった気がする。create、update action 時、paramsを受け取って対象となるカラムの操作を行っていた。ただ、更新して良いもの、更新させたくないものがあるので、それらの機能は model に attr_accessibleやattr_protected を設定していた。Article modelは以下のように書いていた。

class Article < ActiveRecord::Base
  attr_accessible :title, :content
end

去年話題にもなりましたが、Mass Assignment の脆弱性対策としての一環なんでしょうけれど。controller側ではなくmodel側でなんとかできたら良いのに..と思います。(controllerをすっきりさせたいという意味で、、ですが、機能的にはcontrollerの役目なのかな..)

Tweet about this on TwitterShare on Facebook0Share on Google+0


コメントは受け付けていません。