[英]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中可以看到,新用戶的firstname
為nil
。
這是因為此行包含拼寫錯誤:
params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation
應該:
params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation
我認為您缺少一些參數。 使用設計? 嘗試通過Rails控制台創建一個新用戶,以查看需要哪些參數。
檢查作為first_name
和last_name
給出的強參數,但形式上為firstname
和lastname
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.