【问题标题】:Rails engine and deviseRails 引擎和设计
【发布时间】:2012-10-11 11:50:17
【问题描述】:

我有一个 Rails 引擎,我想在其中使用 Devise。我按照this guide 正常安装了设计。

我在我的引擎 devise.rb 中添加了这个:

Devise.setup do |config|
  config.router_name = :cms_user
end

我在路由文件中添加了这个:

Cms::User::Engine.routes.draw do
  devise_for :users, {
    class_name: 'Cms::User',
    module: :devise
  }
end

我在我的路线中添加了这个:

devise_for :users, {
  class_name: 'Cms::User',
  module: :devise
}

但我不断收到此错误:

undefined method 'cms_user'

我做错了什么?

【问题讨论】:

  • 我也尝试将设计添加到一个全新的插件中,并在我的引擎路由文件中添加了这个:devise_for :users, { class_name: 'Blorgh::User', module: :devise }这在我的设计文件 config.router_name = :blorgh_instant_user
  • 有什么运气可以解决这个问题吗?我可能遇到过同样的问题,但我不确定:stackoverflow.com/questions/12879350/…
  • 嗨! - 是的,我解决了,请查看最新的答案。另外我发现在安装引擎时,指定路径很重要,否则设计路由将不起作用(例如:mount Cms::Engine => "/cms")

标签: ruby-on-rails devise content-management-system rails-engines


【解决方案1】:

具体方法如下:

  1. Rails 插件新 cms --mountable -d postgresql

2:像正常一样安装设备

3:在主应用路由文件中添加这个:

  devise_for :users, {
     class_name: 'Cms::User',
     module: :devise
   }

设计 wiki 中提到的这一行给我带来了问题:

config.router_name = :Cms_user 

维基: https://github.com/plataformatec/devise/wiki/How-To:-Use-devise-inside-a-mountable-engine

【讨论】:

  • 如果我们将这个引擎添加到我们的主应用程序中,主应用程序是否可以过滤用户,例如authenticate_user! ?
猜你喜欢
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多