에서 내가 고안 내 사용자 모델의 인증을 가지고 있고 나는? (암호)을 고안
class User < ActiveRecord::Base
devise :database_authenticatable
# overwriting the valid_password from database_authenticatable
module PostDatabaseAuthenticatable
def valid_password?(password)
if old_password
# do something new
else
# call valid_password from DatabaseAuthenticatable
super
end
end
end
include PostDatabaseAuthenticatable
end
이 클래스 정의 안에 내 user.rb,이 같은 valid_password 방법을 덮어 쓰려면 그래서 먼저 데이터베이스를 통해 데이터베이스 권한을 포함 시키십시오. devise를 통해 PostDatabaseAuthenticatable을 포함 시키십시오. 따라서 Rails 3: alias_method_chain still used?을 읽으면 devise의 valid_password 메소드를 완전히 덮어 씁니다.
하지만 내 코드를 실행할 때 항상 먼저이 코드를 호출 한 다음 호출하는 코드를 호출하지 않으므로 코드를 전혀 덮어 쓰지 않습니다.
왜 그런가?
이들은 모두 클래스 메소드 오버 라이드입니다. 모듈 메소드는 겹쳐 쓰여집니다. – Matilda
왜 ' valid_password?'는'User' 클래스 자체에 있습니까? 여기에 모듈로있을 필요는 없습니다. – RipTheJacker
실제로 그게 내가 한 일이야. – Matilda