devise 메서드 user_signed_in?및 current_사용자의 이해가 깊어지면
2954 단어 RubyonRails6.0Ruby
개발 환경
Mac OS Catalina 10.15.7
ruby2.6계
rails6.0과
일의 발단
어느 날, 나는 직장을 옮기는 데 쓰이는 오리지널 응용 프로그램을 만들었다.
로그인하지 않은 사용자가 로컬에서 세부 페이지로 마이그레이션 요청을 하는 동안 다음과 같은 오류가 발생했습니다.
해결 방법
결론적으로 user_signed_in? && 에서 설명한 대로 해당 매개변수의 값을 수정합니다.
오류 코드
show.html.erb<% if current_user.id == @post.user.id %>
<div class = "btn-contents">
<%= link_to '編集する', edit_post_path(@post.id), class: "edit-btn"%>
<%= link_to '削除する', "#", class: "delete-btn"%>
</div>
<% end %>
오류 해결 코드
show.html.erb<% if user_signed_in? && current_user.id == @post.user.id %>
<div class = "btn-contents">
<%= link_to '編集する', edit_post_path(@post.id), class: "edit-btn"%>
<%= link_to '削除する', "#", class: "delete-btn"%>
</div>
<% end %>
정말 어안이 벙벙한 말이다.
원인
로그인하지 않은 사용자에 대한 조건을 잊어버렸기 때문에current_사용자 방법이 사용자의 요청에 로그인하지 않았을 때도 사용되었기 때문이다.
current_사용자는 현재 로그인한 사용자의 정보를 얻을 수 있는 방법이지만, 이러한 상황에서 로그인하지 않았는데도 로그인 정보를 얻으려고 시도합니다.
그래서 "current_user...로그인이 안 돼서 그런 정보가 없어요..."이런 느낌으로 rails 선생님한테 혼났어요.
따라서 우선 앞의 조건에서 user_signed_in?사용 방법을 통해 로그인하지 않으면false로 돌아갑니다.
이렇게 하면 로그인하지 않았을 때 뒤로 옮겨지지 않기 때문에 오류가 해결됩니다.(A&B의 기술, A의 조건이false이면 B의 조건을 참조하지 않음)
대책
나는 대책은 방법에 대한 이해를 멈추는 것이라고 생각한다.
잘못된 원인은 위에서 말한 바와 같지만 근본적인 원인은'항상 방법을 기억하고 이해하기 위해 사용하는 것 같다'는 것이다.
주의하겠습니다.
Reference
이 문제에 관하여(devise 메서드 user_signed_in?및 current_사용자의 이해가 깊어지면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toto_public/items/5e91cdd818325afc1171
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
어느 날, 나는 직장을 옮기는 데 쓰이는 오리지널 응용 프로그램을 만들었다.
로그인하지 않은 사용자가 로컬에서 세부 페이지로 마이그레이션 요청을 하는 동안 다음과 같은 오류가 발생했습니다.
해결 방법
결론적으로 user_signed_in? && 에서 설명한 대로 해당 매개변수의 값을 수정합니다.
오류 코드
show.html.erb<% if current_user.id == @post.user.id %>
<div class = "btn-contents">
<%= link_to '編集する', edit_post_path(@post.id), class: "edit-btn"%>
<%= link_to '削除する', "#", class: "delete-btn"%>
</div>
<% end %>
오류 해결 코드
show.html.erb<% if user_signed_in? && current_user.id == @post.user.id %>
<div class = "btn-contents">
<%= link_to '編集する', edit_post_path(@post.id), class: "edit-btn"%>
<%= link_to '削除する', "#", class: "delete-btn"%>
</div>
<% end %>
정말 어안이 벙벙한 말이다.
원인
로그인하지 않은 사용자에 대한 조건을 잊어버렸기 때문에current_사용자 방법이 사용자의 요청에 로그인하지 않았을 때도 사용되었기 때문이다.
current_사용자는 현재 로그인한 사용자의 정보를 얻을 수 있는 방법이지만, 이러한 상황에서 로그인하지 않았는데도 로그인 정보를 얻으려고 시도합니다.
그래서 "current_user...로그인이 안 돼서 그런 정보가 없어요..."이런 느낌으로 rails 선생님한테 혼났어요.
따라서 우선 앞의 조건에서 user_signed_in?사용 방법을 통해 로그인하지 않으면false로 돌아갑니다.
이렇게 하면 로그인하지 않았을 때 뒤로 옮겨지지 않기 때문에 오류가 해결됩니다.(A&B의 기술, A의 조건이false이면 B의 조건을 참조하지 않음)
대책
나는 대책은 방법에 대한 이해를 멈추는 것이라고 생각한다.
잘못된 원인은 위에서 말한 바와 같지만 근본적인 원인은'항상 방법을 기억하고 이해하기 위해 사용하는 것 같다'는 것이다.
주의하겠습니다.
Reference
이 문제에 관하여(devise 메서드 user_signed_in?및 current_사용자의 이해가 깊어지면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toto_public/items/5e91cdd818325afc1171
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<% if current_user.id == @post.user.id %>
<div class = "btn-contents">
<%= link_to '編集する', edit_post_path(@post.id), class: "edit-btn"%>
<%= link_to '削除する', "#", class: "delete-btn"%>
</div>
<% end %>
<% if user_signed_in? && current_user.id == @post.user.id %>
<div class = "btn-contents">
<%= link_to '編集する', edit_post_path(@post.id), class: "edit-btn"%>
<%= link_to '削除する', "#", class: "delete-btn"%>
</div>
<% end %>
로그인하지 않은 사용자에 대한 조건을 잊어버렸기 때문에current_사용자 방법이 사용자의 요청에 로그인하지 않았을 때도 사용되었기 때문이다.
current_사용자는 현재 로그인한 사용자의 정보를 얻을 수 있는 방법이지만, 이러한 상황에서 로그인하지 않았는데도 로그인 정보를 얻으려고 시도합니다.
그래서 "current_user...로그인이 안 돼서 그런 정보가 없어요..."이런 느낌으로 rails 선생님한테 혼났어요.
따라서 우선 앞의 조건에서 user_signed_in?사용 방법을 통해 로그인하지 않으면false로 돌아갑니다.
이렇게 하면 로그인하지 않았을 때 뒤로 옮겨지지 않기 때문에 오류가 해결됩니다.(A&B의 기술, A의 조건이false이면 B의 조건을 참조하지 않음)
대책
나는 대책은 방법에 대한 이해를 멈추는 것이라고 생각한다.
잘못된 원인은 위에서 말한 바와 같지만 근본적인 원인은'항상 방법을 기억하고 이해하기 위해 사용하는 것 같다'는 것이다.
주의하겠습니다.
Reference
이 문제에 관하여(devise 메서드 user_signed_in?및 current_사용자의 이해가 깊어지면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/toto_public/items/5e91cdd818325afc1171
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(devise 메서드 user_signed_in?및 current_사용자의 이해가 깊어지면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toto_public/items/5e91cdd818325afc1171텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)