1. Conclusion </ b>
2. Quand cela arrive-t-il </ b>
3. Comment utiliser </ b>
4. Ce que j'ai appris d'ici </ b>
Utilisez "redirect_to" et "sauf" </ b>!
buy_item_controller.rb
def edit
@buy_item = BuyItem.find(params[:id])
end
Par exemple Je pense que je programme l'action «modifier» lors de l'édition de ma page, de mon compte ou de la page que j'ai publiée.
À ce stade, avec le programme ci-dessus seul, si vous tapez ~ ~ / ~ ~ / edit dans l'URL, même l'utilisateur déconnecté ou l'utilisateur connecté à la même application peut gérer différents comptes.
buy_item_controller.rb
def edit
@buy_item = BuyItem.find(params[:id])
redirect_to root_path unless current_user.id == @buy_item.user_id
end
Puisque nous utilisons la gemme "devise", "current_user.id" est inclus.
"Redirect_to root_path" est utilisé pour "retourner à la première page".
"Sauf si current_user.id == @ buy_item.user_id" est programmé comme "si l'utilisateur actuellement connecté n'est pas l'utilisateur vendeur de l'article".
Par conséquent, si le vendeur et l'utilisateur connecté sont différents, le produit ne peut pas être modifié.
Je pensais que je le définirais avec "modifier" même si j'étais déconnecté. Cependant, si vous êtes déconnecté, la plage est trop éloignée et vous devez la définir pour toutes les actions. À ce moment-là, je me suis souvenu avant_action. Actions qui ne provoquent pas de boucles infinies en utilisant before_action et sauf À part (autre que l'index et le spectacle), j'ai pensé qu'il serait bon de programmer avec à moins.
buy_item_controller.rb
before_action :move_to_index, except: [:index, :show]
def move_to_index
redirect_to new_user_session_path unless user_signed_in?
end
Recommended Posts