2012-02-09 76 views
0

基本上我的注册表单不起作用。当我签署某人时,表示用户存在Rails:似乎无法注册用户

(0.1ms) begin transaction 
User Exists (0.2ms) SELECT 1 FROM "users" WHERE LOWER("users"."email") == LOWER('[email protected]') 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+\-.][email protected][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 %> 

回答

3

因为你日志中显示回滚,可以认为出现了一些问题回调或在您的情况下,用户模型验证。

看起来你有一个需要验证,你没有输入你的注册表单。

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

要么使这条件为new_record?或删除它。

可能值得在窗体中显示错误,所以你会看到发生了什么验证错误。

+0

你先生真是太棒了,我甚至都没听清楚,非常感谢你! :) – Kellogs 2012-02-09 05:34:39