Rails:似乎无法注册用户

时间:2012-02-09 04:46:55

标签: ruby-on-rails ruby ruby-on-rails-3 registration form-for

基本上我的注册表单无效。当我签名时,它表示用户存在

(0.1ms)  begin transaction 
User Exists (0.2ms)  SELECT 1 FROM "users" WHERE LOWER("users"."email") == LOWER('sambam@herpderp.edu') LIMIT 1
(0.1ms)  rollback transaction

我不确定问题是什么。以下是我的一些模型代码和控制器代码。

用户模型

class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation, :biography, :avatar
has_secure_password
before_create { generate_token(:auth_token) }
validates :name, presence: true, length: { maximum: 20 }
valid_email_regex = /\A[\w+\-.]+@[a-z\d\-.]+\.edu/i
validates :email, presence:   true,
                  format:     { with: valid_email_regex },
                  uniqueness: { case_sensitive: false }
validates :password, length: { minimum: 6}, :on => :create   
validates :password_digest, presence: { message: "Password can't be blank" }
validates :biography, presence: true, length: { maximum: 140 }
has_attached_file :avatar, :styles => { :small => "75x75>" }
end

用户控制器

class UsersController < ApplicationController

def new
  @user = User.new
end

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

def create
  @user = User.new(params[:user])
  if @user.save
    redirect_to @user
  else
    redirect_to current_school
  end
end

学校模式

class School < ActiveRecord::Base
  attr_accessible :name
end

学校管理员

class SchoolsController < ApplicationController

def create
 school = School.find(params[:name])
 if school
   session[:school_id] = school.id
   redirect_to school_path(school)
 end
end

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

end

注册表格

<%= form_for @user do |f| %>
<%= f.text_field :name, :class => 'modal_signinfield', :placeholder => 'Name'  %>
</br></br>
<%= f.text_field :email, :class => 'modal_signinfield', :placeholder => 'Email: Must be .edu'  %>
</br></br>
<%= f.password_field :password, :class => 'modal_signinfield', :placeholder => 'Password: Must be at least 6 letters'  %>
</br></br>
<%= f.password_field :password_confirmation, :class => 'modal_signinfield', :placeholder => 'Renter Password'  %>
<%= f.submit "Sign Up", :class => 'sign_up_button'%>
<% end %>

1 个答案:

答案 0 :(得分:3)

由于您的日志显示回滚,因此可以假设回调出现问题,或者在用户模型验证中出现问题。

您似乎已经获得了必需的验证,但您没有在注册表单中输入。

validates :biography, presence: true, length: { maximum: 140 }

要么为new_record设置这个条件吗?或者删除它。

可能值得在表单中显示错误,因此您将看到发生了哪些验证错误。