为两个设计模型共享RegistrationController

时间:2012-07-08 18:29:07

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我有两个设计模型,Individual和Group。我正在尝试分享注册/确认的类似行为(将用户发送到通知他们已发送电子邮件的页面,或在确认后将其发送到编辑页面等)。

我的问题是,这仅适用于个人。它尚未适用于群组。

配置/ outes.rb:

 devise_for :individuals, :controllers => {:confirmations => "Confirmation", :registrations => "Registrations"}

 devise_for :groups, :controllers => {:confirmations => "Confirmation", :registrations => "Registrations"}

应用程序/控制器/ registrations_controller.rb:

class RegistrationsController < Devise::RegistrationsController
  def after_inactive_sign_up_path_for(item)
    "/post_sign_up?email=#{item.email}"
  end
end

应用程序/控制器/ confirmation_controller.rb:

class ConfirmationController < Devise::ConfirmationsController
  def after_confirmation_path_for(name, resource)
    case resource.class
      when Individual then edit_individual_path resource
      when Group then edit_group_path resource
      else super name, resource
    end
  end
end

以上代码仅适用于个人。无法弄明白为什么。

2 个答案:

答案 0 :(得分:0)

我非常关注routes.rb中提供的行,我没有注意到文件顶部的另一个“devise_for:groups”。在这种情况下,显然设计将覆盖以前的值。愚蠢的错误。

答案 1 :(得分:0)

for scale&amp;没有错误 - 更好地去除。

admin_registration_controller.rb:

class AdminRegistrationsController < Devise::RegistrationsController
end

user_registration_controller.rb:

class UserRegistrationsController < Devise::RegistrationsController
end

路线:

devise_for :admins, controllers: { registrations: 'admin_registrations' }
devise_for :users, controllers: { registrations: 'user_registrations' }