【问题标题】:Rails Devise parameterRails 设计参数
【发布时间】:2011-12-18 19:37:30
【问题描述】:
有没有一种方法可以让我简单地发送一个包含用户密码名或电子邮件的 url 并注册用户或启动一个新会话,而不是通过表单实际登录(我想简单地发送在用户名和密码中并登录用户或注册他)
【问题讨论】:
标签:
ruby-on-rails
ruby
controller
devise
routes
【解决方案1】:
出于多种原因,这通常是一个坏主意,但如果您的用例需要它,没有什么能阻止您这样做。
由于 Devise 用户记录只是标准的 Active Record 记录,您可以像使用任何其他对象一样在它们上使用查找器:
u = User.find(:first, :conditions => {:username => 'foo'})
并像创建任何其他对象一样创建它们:
u = User.new
u.username = 'jsmith'
u.password = 'password'
u.password_confirmation = 'password'
u.save
Devise 提供了一个valid_password? 实例方法,您可以使用它来检查检索到的对象的密码:
u.valid_password?('monkey')
您可以从任何控制器调用 sign_in 并使用检索到的用户对象:
sign_in(:user, u)
【解决方案3】:
您可以在不使用设计的情况下完成所有这些事情。在任何其他情况下,您都应该重写设计安全系统。