基本的にメールによる認証であるclearance gemを使用しています。
メールでログインを維持したいのですが、ユーザーの登録フォームに「名前」フィールドを追加したいと考えています。
ユーザー.rb
class User < ActiveRecord::Base
include Clearance::User
validates_presence_of :name
validates_uniqueness_of :name
end
users_controller.rb
class UsersController < Clearance::UsersController
def create
@user = user_from_params
if @user.save(permit_params)
sign_in @user
render :json => {:success => true}
else
render :json => {:success => false}
end
end
private
def user_from_params
user_params = params[:user] || Hash.new
email = user_params.delete(:email)
password = user_params.delete(:password)
Clearance.configuration.user_model.new(user_params).tap do |user|
user.email = email
user.password = password
end
end
def permit_params
params.require(:user).permit(:name, :email, :encrypted_password, :password, :confirmation_token, :remember_token)
end
end
ご覧のとおり、アクセス許可を追加しました.save
が、アプリは要求に応じて次のエラーをスローします。
ActiveModel::ForbiddenAttributesError in Clearance::UsersController#create
フォームからテキスト フィールドを削除すると:name
すべて機能しますが、フォームに追加のフィールドが必要です。