루비 보석 BCrypt에는 모듈 중 하나를 사용하는 방법에 대한 예제가 있습니다. 워드 프로세서에서 촬영 :인스턴스 변수 & self.variable 사용
def password
@password ||= Password.new(self.password_hash)
end
def password=(new_password)
@password = Password.create(new_password)
self.password_hash = @password
end
왜 우리는 변수 인스턴스를 사용하는 것이 @password
전혀 우리가 self.password_hash
속성이있을 때? 나는 무언가를 놓치고있는 것처럼 느낍니다, 아마도 루비에 대한 나의 미숙함 때문일 것입니다. 개인적으로, 내가 믿는 것을 성취했을 것이와 동일합니다 :
def password
self.password_hash ||= Password.new(self.password_hash)
end
def password=(new_password)
self.password_hash = Password.create(new_password)
end
나는 대답하기 시작했다. 그러나 그 다음 깨달았다, 당신이 옳다, 그것은 조금 이상하다. '@ password'와'# password_hash'의 차이점을 알아 내기 위해 주변 상황을 조사해야 할 것 같습니다. 나는 당신의 방법이 효과가있을 것이라고 생각하지만,이 두 가지가 다를 수 있도록 다른 부작용이있을 수 있습니다. 필자가 확실히 말할 수있는 유일한 것은'@ password'는 항상 Password 인스턴스이지만'# password_hash' _가 될 수 있지만 항상 _있는 것처럼 보이지는 않는 것처럼 보입니다. '# password_hash ='를 호출하는 변경 방법이 있습니까? – Matt