アカウント作成用の検証パスワードを持つアプリがあります。ただし、ユーザーがパスワードを更新する場合、すべての検証が無視されます。
ユーザーコントローラー
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :name,
attr_accessor :password
before_save :encrypt_password
before_save { |user| user.email = email.downcase }
before_save { |user| user.name = name.downcase }
before_create { generate_token(:auth_token) }
before_create { generate_token(:email_token) }
VALID_PASSWORD_REGEX = /^(?=.*[a-zA-Z])(?=.*[0-9]).{6,}$/
validates_confirmation_of :password
validates :password, :on => :create, presence: true, format: { with: VALID_PASSWORD_REGEX }
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: { case_sensitive: false }
validates :name, presence: true, format: { with: VALID_NAME_REGEX }, uniqueness: { case_sensitive: false }, length: { minimum: 4 }
そのため、削除しようとしまし:on => :create,
たが、ログインすると、パスワードが無効であるというエラーが表示されます。だから許さない@user.save!
ユーザーコントローラー
def update
if @user.update_attributes(params[:user])
redirect_to @user
else
render "edit"
end
end