Car*_*os 30 namespaces ruby-on-rails
我有一个关于如何做一些事情的问题"The Rails Way".如果应用程序具有面向公众的一面和管理界面,那么Rails社区对如何做到这一点的普遍共识是什么?
命名空间,子域还是完全放弃它们?
Ben*_*eld 40
管理界面没有真正的"Rails方式",实际上 - 您可以在许多应用程序中找到所有可能的解决方案.DHH暗示他更喜欢名称空间(使用HTTP基本身份验证),但这仍然是一个简单的含义,而不是官方的Rails意见之一.
也就是说,我最近用这种方法取得了很好的成功(命名空间+ HTTP Basic).它看起来像这样:
routes.rb中:
map.namespace :admin do |admin|
admin.resources :users
admin.resources :posts
end
Run Code Online (Sandbox Code Playgroud)
管理员/ users_controller.rb:
class Admin::UsersController < ApplicationController
before_filter :admin_required
# ...
end
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
条件on authenticate_or_request_with_http_basic在生产模式下或在您附加?admin_http=true到任何URL 时触发HTTP Basic身份验证,因此您可以在功能测试中测试它,并在浏览开发站点时手动更新URL.
| 归档时间: |
|
| 查看次数: |
24321 次 |
| 最近记录: |