我有一个关于如何做某些事情的问题“The Rails Way”。通过一个具有公共端和管理界面的应用程序,Rails社区的普遍共识是如何实现的?The Rails Way - Namespaces
命名空间,子域名或完全放弃它们?
我有一个关于如何做某些事情的问题“The Rails Way”。通过一个具有公共端和管理界面的应用程序,Rails社区的普遍共识是如何实现的?The Rails Way - Namespaces
命名空间,子域名或完全放弃它们?
管理界面没有真正的“Rails方式”,实际上 - 您可以在许多应用程序中找到所有可能的解决方案。 DHH暗示他更喜欢名称空间(使用HTTP基本认证),但这仍然是一个简单的含义,而不是官方的Rails观点之一。
这就是说,我最近发现这种方法取得了很大的成功(namespacing + HTTP Basic)。它看起来像这样:
的routes.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
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
触发HTTP基本身份验证在生产模式下或当您将?admin_http=true
附加到任何URL时,所以您c在您的功能测试中进行测试,并在浏览开发网站时手动更新网址。
在一些较小的应用程序中,我认为您不需要分开管理界面。只需使用常规界面并为登录用户添加管理功能即可。
在较大的项目中,我会使用命名空间。出于某种原因,使用子域名对我来说并不合适。
我问了一个类似的问题。 Backend Administration in rails。其中一个答案提到了命名空间,那就是我实现的。
感谢大家回答我的问题。看起来共识是如果你想使用命名空间,因为没有DHH赞助的Rails Way方法。 :)
再次,谢谢所有!
它肯定迟到了答复,但我真的需要对这个问题的答案:如何轻松地管理区域?
以下是这些天可以使用的:Active Admin,与Ryan Bates's great intro。
我讨厌这个。这些路由会得到如下这样的尴尬名字:“new_admin_user_path”。这是管理员创建新用户的操作,而不是创建新的管理员用户。它应该被称为“admin_new_user_path”。丑陋。这让我怀疑我是在用错误的东西来使用命名空间。 – hoff2 2013-04-20 19:55:18