web-dev-qa-db-ja.com

Rails Way-名前空間

「The Rails Way」を実行する方法について質問があります。公開側と管理インターフェイスを備えたアプリケーションでは、Railsそれを行う方法についてのコミュニティ?

名前空間、サブドメイン、またはそれらを完全に放棄しますか?

30
Carlos

実際には、管理インターフェイスに実際の「レールウェイ」はありません。多くのアプリケーションで考えられるすべてのソリューションを見つけることができます。 DHHは、(HTTP基本認証を使用した)名前空間を好むことを示唆していますが、それは単純な意味であり、公式のRails Opinionsの1つではありません。

そうは言っても、私は最近、そのアプローチ(名前空間+ HTTP基本)で良い成功を収めました。次のようになります。

ルート.rb:

map.namespace :admin do |admin|
  admin.resources :users
  admin.resources :posts
end

admin/users_controller.rb:

class Admin::UsersController < ApplicationController
  before_filter :admin_required
  # ...
end

application.rb

class ApplicationController < ActionController::Base
  # ...

  protected
  def admin_required
    authenticate_or_request_with_http_basic do |user_name, password|
      user_name == 'admin' && password == 's3cr3t'
    end if Rails_ENV == 'production' || params[:admin_http]
  end
end

authenticate_or_request_with_http_basicの条件は、本番モードで、または任意のURLに?admin_http=trueを追加すると、HTTP基本認証をトリガーするため、機能テストでテストしたり、開発サイトを参照しながらURLを手動で更新したりできます。 。

40
Ben Scofield

一部の小さなアプリケーションでは、管理インターフェイスを分離する必要はないと思います。通常のインターフェースを使用して、ログインしたユーザーの管理機能を追加するだけです。

より大きなプロジェクトでは、名前空間を使用します。サブドメインを使用することは、何らかの理由で私には正しく感じられません。

5
psst

私の質問に答えてくれたみんなに感謝します。 DHHが後援するRails Wayアプローチ。:)がないため、必要に応じて名前空間を使用することがコンセンサスのようです。

繰り返しになりますが、ありがとうございました。

0
Carlos

確かに返信が遅れていますが、私はこの質問への答えが本当に必要でした:管理領域を簡単に行う方法は?

最近使用できるものは次のとおりです。 Active Admin 、with Ryan Batesのすばらしいイントロ

0
Adit Saxena