我想做的是将登录和注册表单作为单个表单

时间:2012-10-12 08:06:01

标签: ruby-on-rails ruby ruby-on-rails-3 devise

我正在使用设计进行身份验证。 如果电子邮件已存在,则会将用户登录。 如果电子邮件不存在,则会使用这些凭据创建新用户。 应该只有一个提交按钮和一个电子邮件和密码字段。

2 个答案:

答案 0 :(得分:1)

可能必须在控制器中写入条件

例如

def create
 @user = @user.find_or_create_by(params[:user])
 ....
 ....
end

def create
  @user = User.find(params[:user])
  unless @user.present?
    @user = User.new(params[:user])
    if @user.valid?
      ...
    else 
      ...
   end
 end
end

或#for devise - 在注册控制器中

def create
  @user = User.find_by_email(params[:user][:email])
  if @user.present? 
    sign_in(resource_name, resource)
  else
    if resource.save
      if resource.active_for_authentication?
       ...
       ...
      else
       ...
       ...
      end
    else
      ...
      ...
    end
  end
end

答案 1 :(得分:0)

您为user_session创建了一个转到create操作的表单。

在某处的服务器端,您可以通过create操作进行调用。我会提出UserSession的方法。

if User.find_by_email(email)
  # check credentials
else
  # create user
end