设计额外的用户字段、嵌套模型/属性和自定义路由

Devise with additional user fields, nested models / attributes and custom routes

我已经就此发布了一些相关问题,但现在我遇到了障碍。我让这个系统工作得很好,然后我去添加它,现在我把它弄坏了!

首先,我刚刚发现了 Gist,所以这是我的代码:

https://gist.github.com/jasper502/065a63fde266fac1fbf5

这里的想法是我有一个最终可以通过角色绑定到多个公司的用户登录。

您通过 Devise 在自定义 /register 路由上注册并填写公司信息等。自定义注册控制器在用户创建期间创建角色并设置一些其他属性。

当我尝试创建新用户/公司时,附加用户字段(name_first 和 name_last)总是无法通过验证,无论它们实际上是否有效。嵌套的公司字段根本不验证。如果我输入电子邮件和密码字段,只有表单有效,但只会创建用户记录。

对我来说,自定义注册控制器似乎根本没有被处理,因为它似乎不想允许我在 sign_up_params 中指定的额外参数。

在反复试验的基础上,我尝试了这个:

devise_for :users, :skip => [:sessions], :controllers => { :registrations => 'users/registrations', :sessions => 'users/sessions' }
   as :user do
     get '/signin' => 'devise/sessions#new', :as => :new_user_session
     post '/signin' => 'devise/sessions#create', :as => :user_session
     delete '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session
end

我想看看正常的 Devise 路由是否有效,它们确实有效,只是现在验证似乎被完全绕过了。如果我提交空白表格,我会收到各种错误,但如果我填写它,现在就可以正常工作了。我快接近了,但显然这里遗漏了一些小东西。

所以澄清一下:

我将路线从 "devise/..." 切换到 "user/...",这似乎成功了。

希望这对其他人有帮助。