Devizes를 사용하여 Rails 앱에서 인증을 처리하고 있으며 영구 삭제를 위해 permanent_records를 사용하고 있습니다. 내 사용자 모델의 기본 범위는 삭제되지 않은 사용자입니다. 사용자가 자신의 계정을 삭제 (비활성화)하면 페이스 북에서와 마찬가지로 로그인하여 계정을 다시 활성화 할 수 있기를 바랍니다. 문제는 Devise가 삭제 된 사용자를 찾지 못하기 때문에 계정이 발견되지 않는다는 것입니다. 내가 세션 번호를 무시할 생각은 방법을삭제 된 범위를 Devise 인증과 함께 사용
def create
self.resource = warden.authenticate!(auth_options)
set_flash_message(:notice, :signed_in) if is_navigational_format?
sign_in(resource_name, resource)
respond_with resource, :location => after_sign_in_path_for(resource)
end
를 생성하지만이 소장에 의해 처리되기 때문에, 내가 운이있어 보인다. 나는 너무 깊게 파기 시작하면 일을 깨뜨리기 시작 할까 봐 걱정됩니다.
아이디어가 있으십니까?
감사합니다.
신난다! find_for_authentication을 재정의하는 경우 기본 범위를 사용하지 않도록 지시하려면 어떻게해야합니까? 그들의 예는 find_first_by_auth_conditions (tainted_conditions, : active => true)입니다. 그러나 원하지 않습니다 : deleted => true, 삭제 된 레코드에 몇 가지 특별한 로직을 적용 할 수 있도록 삭제 된 레코드와 삭제되지 않은 레코드가 필요합니다. –
특히 user = super ||와 같이 할 수 있다면 더 멋질 것입니다. find_first_by_auth_conditions (tainted_conditions, : deleted_at => "IS NOT NULL") 물론 "IS NOT NULL"은 해시에 전달할 수있는 것이 아닙니다. deleted_at가있는 레코드는 어떻게 찾을 수 있습니까? –
자신의 파인더를 쓸 수 있습니다 (어댑터와 필드를 알고 있기 때문에). 'unscoped.where (tainted_conditions) .first' – MikDiet