[Rails Best Practice]Create base controller[訳]

Rails Best Practice

https://rails-bestpractices.com/posts/2011/06/02/create-base-conroller/
偉大な本家様

自分の勉強用に Rails Best Practiceシリーズを翻訳します。

Before

コードを明確にするために、通常は同じビジネススコープのコントローラを同じディレクトリに置きます。多くの場合、これらのコントローラはいくつかの機能を共有しているので、DRY用のベースコントローラを作成することができます。

例えば、content管理のためのコントローラのリストがあります。

admin
  content
    articles_controller
    comments_controller
    scores_controller
  other
    others_controller

通常、adminディレクトリ以下のコントローラはcurrent_userがadminである必要があるので、各コントローラごとに before_filter :admin_required を追加する必要があります。これを行うには、どこで行うのがよいのでしょうか?adminの “base “コントローラです。

baseコントローラを追加した後のファイル構造

admin
  content
     articles_controller.rb
     comments_controller.rb
     scores_controller.rb
     base_controller.rb
  other
     others_controller.rb
  base_controller.rb

admin/base_controllerのコード例

class Admin::BaseController < ApplicationController
  before_filter :admin_required
  protected
  def admin_required
    # implementation
  end
end

admin/content/base_controllerのコード例

class Admin::Content::BaseController < Admin::BaseController
  before_filter :find_article
  protected
  def find_article
    @article = Article.find_by_id(params[:id])
  end
end

For controllers under admin/content, they just need to inherit from admin/content/base_controller.

baseコントローラに入れられる(入れるべき)例をいくつか紹介します。

  1. アクセス制御
  2. レイアウトセレクタ
  3. ほとんどのアクションで使用される変数を初期化します。(上記の例の@articleのように)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

コメント

タイトルとURLをコピーしました