【rails】 존재하지 않는 데이터에 액세스했을 때의 예외 처리
레코드에 없는 데이터에 액세스함
만든 컨트롤러에
profile_controller.rbclass ProfilesController < ApplicationController
def show
@profile = Profile.find(params[:id])
end
end
그리고 만 쓰고 적절한 예외 처리를 작성하지 않은 경우 존재하지 않는 데이터의 URL에 액세스하려고하면
ActiveRecord::RecordNotFound라는 오류가 발생합니다.
이와 같이 레코드에 데이터가 존재하지 않는 경우의 예외 처리를 써 갑니다.
rescue를 이용한 예외 처리
rescue
를 사용하면, 에러가 발생했을 경우 다음에 하는 처리를 쓸 수가 있습니다.
이번에는 프로필 컨트롤러에서 발생한 오류를 처리합니다.
id를 지정하고 쿼리를 실행한 후 레코드에 해당 매개 변수가 있는 데이터가 없는 경우 프로필의 index 페이지로 리디렉션되는 처리를 rescue
를 사용하여 씁니다.
profile_controller.rbclass ProfilesController < ApplicationController
def show
@profile = Profile.find(params[:id])
#以下を追記
rescue ActiveRecord::RecordNotFound => e
redirect_to profiles_path
end
end
이 설명을 통해 프로필 컨트롤러의 show 작업이 데이터베이스에서 데이터를 검색하는 과정을 수행하고 ActiveRecord::RecordNotFound라는 오류가 프로필 index 페이지로 리디렉션됩니다.
rescue_from을 사용한 예외 처리
rescue_from
는 예외를 하나의 컨트롤러 전체에서 처리할 수 있습니다.
즉 show 액션 외에 edit, update, delete에서도 같은 처리를 하고 싶은 경우
profile_controller.rbclass ProfilesController < ApplicationController
#以下を追記
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
def show
@profile = Profile.find(params[:id])
end
def edit
@profile = Profile.find(params[:id])
end
#省略
#以下を追記
private
def record_not_found
redirect_to profiles_path
end
end
이와 같이 처리를 작성하는 것으로, 프로파일 콘트롤러의 데이터를 취득하는 처리를 실행하는 액션으로부터 존재하지 않는 데이터에 액세스 했을 경우, index 페이지에 리디렉션 되게 됩니다.
Reference
이 문제에 관하여(【rails】 존재하지 않는 데이터에 액세스했을 때의 예외 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Izushi/items/68b80594eef53b75aa07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class ProfilesController < ApplicationController
def show
@profile = Profile.find(params[:id])
end
end
rescue
를 사용하면, 에러가 발생했을 경우 다음에 하는 처리를 쓸 수가 있습니다.이번에는 프로필 컨트롤러에서 발생한 오류를 처리합니다.
id를 지정하고 쿼리를 실행한 후 레코드에 해당 매개 변수가 있는 데이터가 없는 경우 프로필의 index 페이지로 리디렉션되는 처리를
rescue
를 사용하여 씁니다.profile_controller.rb
class ProfilesController < ApplicationController
def show
@profile = Profile.find(params[:id])
#以下を追記
rescue ActiveRecord::RecordNotFound => e
redirect_to profiles_path
end
end
이 설명을 통해 프로필 컨트롤러의 show 작업이 데이터베이스에서 데이터를 검색하는 과정을 수행하고 ActiveRecord::RecordNotFound라는 오류가 프로필 index 페이지로 리디렉션됩니다.
rescue_from을 사용한 예외 처리
rescue_from
는 예외를 하나의 컨트롤러 전체에서 처리할 수 있습니다.
즉 show 액션 외에 edit, update, delete에서도 같은 처리를 하고 싶은 경우
profile_controller.rbclass ProfilesController < ApplicationController
#以下を追記
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
def show
@profile = Profile.find(params[:id])
end
def edit
@profile = Profile.find(params[:id])
end
#省略
#以下を追記
private
def record_not_found
redirect_to profiles_path
end
end
이와 같이 처리를 작성하는 것으로, 프로파일 콘트롤러의 데이터를 취득하는 처리를 실행하는 액션으로부터 존재하지 않는 데이터에 액세스 했을 경우, index 페이지에 리디렉션 되게 됩니다.
Reference
이 문제에 관하여(【rails】 존재하지 않는 데이터에 액세스했을 때의 예외 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Izushi/items/68b80594eef53b75aa07
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class ProfilesController < ApplicationController
#以下を追記
rescue_from ActiveRecord::RecordNotFound, with: :record_not_found
def show
@profile = Profile.find(params[:id])
end
def edit
@profile = Profile.find(params[:id])
end
#省略
#以下を追記
private
def record_not_found
redirect_to profiles_path
end
end
Reference
이 문제에 관하여(【rails】 존재하지 않는 데이터에 액세스했을 때의 예외 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Izushi/items/68b80594eef53b75aa07텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)