2012-02-09 22 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

あなたはロールバックを示しているログので、何かは、Userモデルの検証コールバックを持つか、あなたのケースでは間違っていたと仮定することができます。

あなたのサインアップフォームに入力していない、必要な確認があるようです。

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

この条件をnew_recordに設定しますか?または削除します。

フォームにエラーを表示する価値がありますので、どのような検証エラーが発生したかがわかります。

+0

あなたはすばらしいです、私もそれをキャッチしていない、ありがとう! :) – Kellogs

関連する問題