题
我有一个关于如何做某事的问题“The Rails Way”。对于具有公众参与方和管理界面的应用程序,Rails社区中关于如何执行此操作的一般共识是什么?
命名空间,子域名还是完全放弃它们?
解决方案
没有真正的“Rails方式”对于管理界面,实际上 - 您可以在许多应用程序中找到所有可能的解决方案。 DHH暗示他更喜欢名称空间(使用HTTP基本身份验证),但这仍然是一个简单的含义,而不是官方Rails意见之一。
那就是说,我最近用这种方法取得了很好的成功(命名空间+ 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 Basic身份验证,或者当您将?admin_http = true
附加到任何URL时,您可以在功能测试中对其进行测试并在浏览开发站点时手动更新URL。
其他提示
在一些较小的应用程序中,我认为您不需要分离管理界面。只需使用常规界面并为登录用户添加管理功能。
在更大的项目中,我会使用命名空间。由于某种原因,使用子域名对我来说不合适。
我问了一个类似的问题。 导轨后端管理。其中一个答案提到了命名空间,这就是我实现的。
感谢所有回答我问题的人。看起来共识是使用名称空间,如果你想,因为没有DHH赞助的Rails Way方法。 :)
再次感谢所有人!
回复肯定迟到了,但我真的需要回答这个问题:如何轻松管理区域?
以下是目前可以使用的内容: Active Admin , Ryan Bates的精彩介绍。
不隶属于 StackOverflow