Mam poprawności hasła do mojego User
modelu oraz sposób create_with_omniauth
aby uzyskać informacje od użytkownika konta na Facebooku:Jak pominąć sprawdzanie poprawności hasła w poniższej metodzie logowania OmniAuth?
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+\-.][email protected][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
Teraz po kliknięciu link_to "Sign in with Facebook, "auth/facebook"
otrzymuję ten błąd:
Validation failed: Password can't be blank, Password can't be blank, Password is too short (minimum is 6 characters), Password confirmation can't be blank
z tego powodu dwie linie w modelu User
:
validates :password, presence: true, length: { minimum: 6 }
validates :password_confirmation, presence: true
Jak pominąć to sprawdzanie, gdy użytkownik próbuje zalogować się przy użyciu metody logowania OmniAuth?
Hej dzięki za sugestie! Przepraszam, jestem początkującym Railsiem. Czy możesz podać przykład kodu, który wygeneruje losowe hasło, gdy użytkownik kliknie znak Facebooka? – alexchenco
self.password = self.password_confirmation = SecureRandom.urlsafe_base64 (n = 6) –
Dzięki! Czy powinno to iść w metodzie 'self.create_with_omniauth'? Czy nie powinno to być "user.password"? – alexchenco