30

我有一个关于如何做“The Rails Way”的问题。对于具有面向公众的一面和管理界面的应用程序,Rails 社区对如何做到这一点的普遍共识是什么?

命名空间、子域或完全放弃它们?

4

4 回答 4

41

实际上,管理界面没有真正的“Rails 方式”——您可以在许多应用程序中找到所有可能的解决方案。DHH 暗示他更喜欢命名空间(使用 HTTP 基本身份验证),但这仍然是一个简单的暗示,而不是官方的 Rails 意见之一。

也就是说,我最近发现这种方法很成功(命名空间 + HTTP Basic)。它看起来像这样:

路线.rb:

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

管理员/users_controller.rb:

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

应用程序.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

条件 onauthenticate_or_request_with_http_basic在生产模式或附加到任何 URL 时触发 HTTP 基本身份验证?admin_http=true,因此您可以在功能测试中对其进行测试,并在浏览开发站点时手动更新 URL。

于 2008-09-23T10:05:39.077 回答
5

在一些较小的应用程序中,我认为您不需要分离管理界面。只需使用常规界面并为登录用户添加管理功能。

在更大的项目中,我会使用命名空间。出于某种原因,我觉得使用子域不合适。

于 2008-09-23T05:47:15.577 回答
0

感谢所有回答我问题的人。如果您愿意,似乎共识是使用命名空间,因为没有 DHH 赞助的 Rails Way 方法。:)

再次感谢大家!

于 2008-09-23T15:47:33.000 回答
0

回复肯定晚了,但我真的需要这个问题的答案:如何轻松地做管理区域?

以下是这些天可以使用的内容:Active Admin,以及Ryan Bates 的精彩介绍

于 2011-10-06T17:53:32.513 回答