Active Admin身份validation与用户身份validation冲突
Active Admin是一个用于在应用程序中使用管理仪表板的gem。 它使用Devise登录用户,并为管理员创建单独的admin_user
模型。 我的应用程序已经使用了devise并将其用户作为user
模型。 自从我开始使用活动的admin gem之后,在我的路由文件中,即使我的用户已登录,以下行也会一直解析为home #index而不是用户#spaceboard。以前用户工作时用户工作正常#dashboard作为根url。
root :to => 'users#dashboard', :constraints => lambda {|r| r.env["warden"].authenticate? } root :to => 'home#index'
发生的事情是.authenticate?
正在检查是否已登录的admin_user
(属于Active Admin)但不是我的user
模型,这是我需要检查的内容,因此当我登录到活动管理界面时,我的站点根目录成为用户#dashboard而不是检查user
是否已登录。 我该如何制作.authenticate?
检查user
是否登录而不是admin_user
?
任何帮助或线索将非常感谢
我能够解决这个问题。 该问题与Devise期望应用程序中的单个用户模型有关。 这是如何解决它。
在config/initializers/devise.rb
文件中,添加:
config.scoped_views = true
和
config.default_scope = :user #or whichever is your regular default user model
多数民众赞成,warden检查:用户是否登录而不是:admin_user
你为什么使用get "/"
? 你应该删除它。 我使用的定义与你的定义很相似,并且对我很好。 使用只:
root :to => 'users#dashboard', :constraints => lambda {|r| r.env["warden"].authenticate? } root :to => 'home#index'
我不确定,但你可以尝试类似的东西
root :to => proc { |env| [ 302, {'Location'=> env["warden"].authenticate? ? "users/dashboard" : "/home" }, [] ] }
对我有用的是:
constraint = lambda { |request| request.env["warden"].authenticate? and request.env['warden'].user.instance_of?(AdminUser) }
- 无法登录ActiveAdmin
- 无法使用skip_before_filter在Rails中使用ActiveAdmin
- 无法构建嵌套的多态关联’。 您是否正在尝试构建多态一对一关联
- 使用ActiveAdmin的多步骤表单?
- rails 3.1:如何重写inherited_resources并允许rails scaffolding再次正常工作?
- 如何自定义活动的管理布局?
- 错误未定义方法`的to_key’:尝试在Active Admin table_for上使用数组数据时的数组(Rails,Postgresql,postgres_ext gem)
- Ruby On Rails Active Admin has_many更改下拉列表以使用不同的列
- Rails Active Admin如何使用2列config.sort_order(关联中的1列)