Sea*_*man 47 ruby-on-rails authlogic devise ruby-on-rails-3
我有一个表单,我在Rails中收集了大量信息.此表单的一部分是要注册的新用户的字段.由于Devise具有专门用于创建新用户的控制器/操作,因此我不知道如何以完全不同的操作以编程方式创建用户,同时创建另一个记录.我真的不能将用户注册表分开.我无法弄清楚如何创建用户,然后记录用户,就像我在Authlogic中可以轻松做的那样.
我使用了Authlogic和Devise,并认为每个都有自己的优点和缺点.有了Devise,我喜欢用新项目"开始"的速度有多快,但定制它似乎很痛苦.一段时间后,Authlogic对Rails 3有很多问题,我转而使用Devise.我现在正在开发一个新项目并从头开始.
所以我认为这个问题有2个可能的答案:(a)如何在Devise中做到这一点,或者(b)为什么我应该用Rails 3切换到Authlogic.
Dav*_*ulc 84
您可以通过创建新的用户模型来创建新的Devise用户(请参阅https://github.com/plataformatec/devise/wiki/How-To:-Manage-users-through-a-CRUD-interface)
@user = User.new(:email => 'test@example.com', :password => 'password', :password_confirmation => 'password')
@user.save
Run Code Online (Sandbox Code Playgroud)
要登录新创建的用户,请使用 sign_in @user
在sign_in之前保存新创建的用户将失败,因为设计尚未填充User对象的必填字段.因此,David的代码将适用于当前页面,但下一页将无法获得已登录的用户,因为用户仅在设置会话后保存.当我使用Mongoid时会发生这种情况,我不知道它是否是Mongodb特有的问题.
为了解决这个问题,我有一个非常不完美的解决方案,可以两次调用sign_in.第一个sign_in将保存用户.它只是有效但人们可以肯定地改进它.
@user = User.new(:email => 'test@example.com',
:password => 'password',
:password_confirmation => 'password')
# This will save the user in db with fields for devise
sign_in @user
# :bypass is set to ignore devise related callbacks and only save the
# user into session.
sign_in @user, :bypass => true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56238 次 |
| 最近记录: |