簡體   English   中英

數據庫為空,用戶已存在消息?

[英]Empty database, user already exists message?

我正在網站上填寫注冊表格。 我輸入名字,姓氏,電子郵件,密碼和密碼確認。 當我單擊“提交”時,我的表單將清除,控制台會告訴我該用戶已經存在(即使它不存在,並向我拋出成功消息)。 簡而言之:我正在嘗試創建一個新用戶,並將其保存到我的數據庫中。

見下文:

用戶存在(0.2ms)從“用戶”中選擇“ 1”作為“用戶”。“名字”為NULL LIMIT 1(0.1ms)回滾事務
在布局/應用程序中呈現的users / new.html.erb(2.4ms)在136ms內完成200 OK(查看:68.4ms | ActiveRecord:0.9ms)

參見下面的代碼-歡呼!

users_controller.rb

class UsersController < ApplicationController

def create
  @user = User.new(user_params)
  if @user.save
    flash[:success] = "You signed up successfully"
    flash[:color] = "valid"
    redirect_to @user
  else
    flash[:notice] = "Form is invalid"
    flash[:color] = "invalid"
    render "new"
  end
end


private
def user_params
  params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation)
end


def show
  @user = User.find(params[:id])
end

def new
end

end

user.rb

class User < ActiveRecord::Base


  validates_length_of :password, :in => 6..20, :on => :create
  validates :password_confirmation, presence: true, if: -> { new_record? || changes["password"] }

end

new.html.erb

<%= form_for(:user, :url => {:controller => 'users', :action => 'create'}) do |f| %>

<%= render 'shared/error_messages' %>

    </br> <%= f.text_field :firstname, placeholder: 'First Name' %> 
    </br> <%= f.text_field :lastname, placeholder: 'Last Name' %>
    </br> <%= f.text_field :email, placeholder: 'Email' %> 
    </br> <%= f.password_field :password, placeholder: 'Password' %>
    </br> <%= f.password_field :password_confirmation, placeholder: 'Confirm Password' %>
    <%= f.submit :Register %>
  <% end %>

從生成的SQL中可以看到,新用戶的firstnamenil

這是因為此行包含拼寫錯誤:

params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation

應該:

params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation

我認為您缺少一些參數。 使用設計? 嘗試通過Rails控制台創建一個新用戶,以查看需要哪些參數。

檢查作為first_namelast_name給出的強參數,但形式上為firstnamelastname

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM