User
モデルのパスワード検証とcreate_with_omniauth
、ユーザーのFacebookアカウントから情報を取得する方法があります。
user.rb:
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_secure_password
validates :name, presence: true, length: { maximum: 50 }
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, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
def self.create_with_omniauth(auth)
create! do |user|
user.provider = auth["provider"]
user.uid = auth["uid"]
user.name = auth["info"]["name"]
user.email = auth["info"]["email"]
end
end
end
クリックlink_to "Sign in with Facebook, "auth/facebook"
すると、次のエラーが発生します。
検証に失敗しました:パスワードを空白にすることはできません、パスワードを空白にすることはできません、パスワードが短すぎます(最小6文字)、パスワードの確認を空白にすることはできません
User
モデル内のこの2つの線のため、次のようになります。
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
ユーザーがOmniAuthログイン方法でログインしようとしているときにその検証をバイパスするにはどうすればよいですか?