1

新しいユーザーを既存の DB に追加しようとしています。これにサインアップ フォームを使用するたびに、メールが NULL のユーザーが検索されます。

(0.1ms)  begin transaction
User Exists (0.1ms)  SELECT 1 AS one FROM "users" WHERE "users"."email" IS NULL LIMIT 1
(0.1ms)  rollback transaction

サーバー ログを見ると、実際には有効な電子メール アドレスが示されています。

Parameters: {"utf8"=>"✓",
"authenticity_token"=>"epYmQoIfibeimZEFYo5MdSIqjJM3sLZgTtj79rMpvyQ=", "user"=>
 {"name"=>"Herp Derp", "email"=>"lang.martin@herpderp.de", "password"=>"[FILTERED]",      
 "password_confirmation"=>"[FILTERED]"}, "commit"=>"Create User"}

user.rb は次のようになります。

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation
  has_secure_password

  before_save { |user| user.email = email.downcase }


  validates :name, presence: true,
                   length: {maximum: 40}

  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true,
          format: { with: VALID_EMAIL_REGEX },
          uniqueness: { case_sensitive: false }

  validates :password, length: {minimum: 6}
  validates :password_confirmation, presence: true
end

そして、次の入力フォーム: (Formtastic を使用)

%h1 Sign Up
%div.row
  %div.span6.offset3
    = semantic_form_for @user do |f|
      = f.inputs do
        = f.input :name
        = f.input :email
        = f.input :password
        = f.input :password_confirmation
        = f.action :submit

user_controller.rb

  def create
    @user = User.new(params[:users])
    if @user.save
      redirect_to @user
    else
      render 'new'
    end
  end
4

2 に答える 2

0

Rails コンソール (rails s) で新しいユーザーを作成しようとしましたか?

于 2012-07-24T22:19:20.573 に答える
0

私は実際にエラーを見つけました:

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

パラメータは :user に変更され、完了しました。

于 2012-07-25T00:01:42.823 に答える