Ruby on rails Rails 3.1设计——我如何让用户只需一封电子邮件就可以创建一个帐户?

Ruby on rails Rails 3.1设计——我如何让用户只需一封电子邮件就可以创建一个帐户?,ruby-on-rails,devise,registration,Ruby On Rails,Devise,Registration,我正在使用Rails 3.1和Desive进行注册,并希望修改Desive注册机制,使未注册的用户可以只使用电子邮件地址注册,而不必输入用户名和密码。我想要的行为是a)如果没有输入密码,我希望应用程序随表单自动提交一个密码,以及密码确认;b)如果没有提交用户名,应用程序将根据电子邮件地址的本地部分提交用户名猜测。例如,如果您使用电子邮件地址注册,如“SarahSilverman@gmail.com,没有用户名或密码,它将提交“SarahSilverman”作为默认用户名,以及随机生成的密码。下面

我正在使用Rails 3.1和Desive进行注册,并希望修改Desive注册机制,使未注册的用户可以只使用电子邮件地址注册,而不必输入用户名和密码。我想要的行为是a)如果没有输入密码,我希望应用程序随表单自动提交一个密码,以及密码确认;b)如果没有提交用户名,应用程序将根据电子邮件地址的本地部分提交用户名猜测。例如,如果您使用电子邮件地址注册,如“SarahSilverman@gmail.com,没有用户名或密码,它将提交“SarahSilverman”作为默认用户名,以及随机生成的密码。下面是一个链接,指向提取本地部分并生成临时密码的代码:

以下是注册视图:

[app/views/design/registrations/html.haml])(https://github.com/fdschoeneman/skygodlin/blob/invitable-adding/app/views/devise/registrations/new.html.haml)

现在,密码字段正在按预期填充,并随表单一起提交密码。问题是,我的代码没有将名称添加到参数中,并在用户单击“注册”时将其与电子邮件一起提交。以下是我的日志的相关输出要点:


谢谢。

您需要覆盖注册控制器

class RegistrationsController < Devise::RegistrationsController
  def new
    super
  end

  def create
    if params[:user] && !params[:user][:password]
        #params[:user][:password] = "Some password" 
        #should problem make this a random string but that's another question 
        super
    else
        super
    end
  end

  def update
    super
  end
end
类注册控制器

有些人喜欢这样。如果有错误,请告诉我。

Desive有不同的模块,可以帮助您按需要对某些帐户进行成本计算,您可以在您的用户模型顶部找到它们

class Company < ActiveRecord::Base

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
class公司

负责设计验证模型的可验证的模块,请务必对其进行注释,以删除默认的设计验证选项。之后,您可以创建自己的验证逻辑,或覆盖注册控制器,就像

感谢Codeglot。遗憾的是,它仍然不起作用。我已经设置了config/routes.rb:谢谢Codeglot。我已经在config/routes.rb中添加了这一行,类似于本文的要点,但仍然不起作用:routes?您正在使用rails,对吗?这属于控制器。看到这段代码的第一行了吗<代码>应用程序/控制器/用户\控制器.rb
?如果你有问题,请告诉我。Codeglot,谢谢你的帮助。我想我现在走对了方向。下面是我写的registrations_controller.rb的要点,它解决了我想做的大部分事情:嗨,罗格里奥,我已经注释掉了:可验证并使用了Codeglot的代码,但它仍然没有将名称、密码和密码确认放在用户参数中。你现在能发布你所有的代码吗。