0

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

4

2 回答 2

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

或 # 用于设计 - 在注册控制器中

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
于 2012-10-12T08:20:38.073 回答
0

user_session您为此创建了一个表单create

在服务器端的某个地方,您可以从您的create操作中调用它。我会提出一个方法UserSession

if User.find_by_email(email)
  # check credentials
else
  # create user
end
于 2012-10-12T08:16:41.860 回答