Ruby on rails Desive/cancan的注册流程不同,但只有一个用户模型?

Ruby on rails Desive/cancan的注册流程不同,但只有一个用户模型?,ruby-on-rails,devise,registration,cancan,Ruby On Rails,Devise,Registration,Cancan,到目前为止,我一直在尝试使用Desive来允许同一用户模型有两种不同的注册路径,但都没有成功 我的用户模型链接到其他数据模型,但在注册时我并不关心这一点。但我仍然想向用户“显示”差异(url路径、外观和感觉等),当然,我还想在用户模型中保存我的用户是什么类型的,这样我可以在稍后返回并询问我需要填写哪些其他模型(链接到用户) 我已经探索了重写我自己的注册控制器的道路,但我不认为这对路线有什么帮助。。。我想要:/usertype1/signup和/usertype2/signup这样的东西,实际上可

到目前为止,我一直在尝试使用Desive来允许同一用户模型有两种不同的注册路径,但都没有成功

我的用户模型链接到其他数据模型,但在注册时我并不关心这一点。但我仍然想向用户“显示”差异(url路径、外观和感觉等),当然,我还想在用户模型中保存我的用户是什么类型的,这样我可以在稍后返回并询问我需要填写哪些其他模型(链接到用户)

我已经探索了重写我自己的注册控制器的道路,但我不认为这对路线有什么帮助。。。我想要:/usertype1/signup和/usertype2/signup这样的东西,实际上可以用于2个以上的用户类型,但最终它应该只创建最简单的用户模式(电子邮件、pwd、确认、用户类型)

欢迎在此提出任何建议:)


Alex

我最后做的是将自定义路线指向同一注册页面:

devise_for :users, :controllers => { :registrations => "registrations" } do
  get '/author/sign_up', :to => 'registrations#new'
  get '/client/sign_up', :to => 'registrations#new'      
end
然后在注册页面上,我只需添加一个隐藏字段,该字段的值随url的不同而变化:

- if request.fullpath =~ /\/author\/sign_up/
  - session[:registration] = "author"
  = render 'author'
- elsif request.fullpath =~ /\/client\/sign_up/
  - session[:registration] = "client"
  = render 'client' '   
因此,我可以在注册时呈现两个不同页面的外观。这可能适用于X种不同类型的用户


亚历克斯

不错。我必须做的另一件事是通过一个隐藏字段传递给RegistrationController。然后,我可以根据用户选择的注册“路径”向用户添加自定义参数。