{"id":20224,"date":"2023-04-29T00:08:26","date_gmt":"2023-04-28T20:38:26","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/"},"modified":"2023-04-29T00:08:26","modified_gmt":"2023-04-28T20:38:26","slug":"exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/","title":{"rendered":"Exception Handling \u0648 Validations in Rails \u0648 \u0646\u062d\u0648\u0647 \u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627\u0647\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646."},"content":{"rendered":"<div data-article-id=\"1412614\" id=\"article-body\">\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u062b\u0646\u0627 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0631 Rails \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a.  \u0631\u0633\u06cc\u062f\u06af\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a <em>\u0647\u0631<\/em> \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0648\u0628\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 Rails \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f.  \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062e\u0637\u0627\u06cc\u06cc \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0646\u0647 \u062a\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\u060c \u0628\u0644\u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u0645\u0627\u0646 \u0646\u06cc\u0632 \u0645\u0641\u06cc\u062f \u0627\u0633\u062a.  \u0686\u06af\u0648\u0646\u0647 \u0645\u062a\u0648\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0634\u062a\u0628\u0627\u0647\u06cc \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 \u06af\u0648\u0646\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u06cc\u0627 \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u062e\u0637\u0627 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u061f<\/p>\n<p><strong>\u0627\u0628\u062a\u062f\u0627\u060c \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632\u060c \u06cc\u06a9 \u062a\u062c\u062f\u06cc\u062f (\u06cc\u0627 \u0645\u0642\u062f\u0645\u0647) \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627.  \u062f\u0631 \u063a\u06cc\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a\u060c \u0628\u0647 \u0628\u062e\u0634 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0628\u0631\u0648\u06cc\u062f!<\/strong><\/p>\n<hr\/>\n<p>\u0642\u0628\u0644\u0627\u064b \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc\u06cc \u0631\u0627 \u062f\u0631 \u0639\u0645\u0644 \u062f\u06cc\u062f\u0647 \u0627\u06cc\u062f.  \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u06af\u0631 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u062f\u0631 \u06a9\u062f \u062e\u0648\u062f \u0627\u0634\u062a\u0628\u0627\u0647 \u062a\u0627\u06cc\u067e\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0627\u0639\u062b \u0627\u0632 \u06a9\u0627\u0631 \u0627\u0641\u062a\u0627\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0627 \u00abNoMethodError\u00bb \u06cc\u0627 \u00abSyntaxError\u00bb \u0634\u0648\u062f\u060c \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"n\">putss<\/span> <span class=\"s1\">'Hello World'<\/span>\n<span class=\"c1\"># =&gt; NoMethodError: undefined method 'putss' for main:Object<\/span>\n<span class=\"c1\"># =&gt; Did you mean? puts<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 \u06cc\u06a9 \u0634\u0631\u0637 \u062e\u0637\u0627 \u062f\u0631 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a.  \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0646\u062d\u0648\u0647 \u0628\u0631\u062e\u0648\u0631\u062f \u0631\u0648\u0628\u06cc \u0628\u0627 \u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627\u06cc \u063a\u06cc\u0631\u0645\u0646\u062a\u0638\u0631\u0647 \u0627\u0633\u062a \u0648 \u0645\u06a9\u0627\u0646\u06cc\u0633\u0645\u06cc \u0628\u0631\u0627\u06cc \u062a\u0648\u0642\u0641 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f.  \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0645\u0637\u0631\u062d \u0645\u06cc \u0634\u0648\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0634\u0631\u0648\u0639 \u0628\u0647 \u062e\u0627\u0645\u0648\u0634 \u0634\u062f\u0646 \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06af\u0631 \u0647\u06cc\u0686 \u0686\u06cc\u0632 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f \u0631\u0627 \u0645\u062a\u0648\u0642\u0641 \u0646\u06a9\u0646\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0645\u062a\u0648\u0642\u0641 \u0645\u06cc \u0634\u0648\u062f \u0648 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7\" >\u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%DB%8C%DB%8C\" >\u0627\u0634\u06cc\u0627\u0621 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%D9%87%D8%A7%DB%8C_%D8%AE%D9%88%D8%AF%D8%AA%D8%A7%D9%86\" >\u0627\u06cc\u062c\u0627\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u062e\u0648\u062f\u062a\u0627\u0646<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%D9%87%D8%A7%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\" >\u0627\u06cc\u062c\u0627\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%B3%D9%84%D8%B3%D9%84%D9%87_%D9%85%D8%B1%D8%A7%D8%AA%D8%A8_%D8%B7%D8%A8%D9%82%D8%A7%D8%AA_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%DB%8C%DB%8C\" >\u0633\u0644\u0633\u0644\u0647 \u0645\u0631\u0627\u062a\u0628 \u0637\u0628\u0642\u0627\u062a \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%D9%87%D8%A7%DB%8C_%D8%B3%D8%A7%D8%AF%D9%87\" >\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0647\u0627\u06cc \u0633\u0627\u062f\u0647<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C_%D9%88%D8%AC%D9%88%D8%AF_%D9%88%DB%8C%D8%A7_%D8%B9%D8%AF%D9%85_%D9%88%D8%AC%D9%88%D8%AF_%D8%B5%D9%81%D8%A7%D8%AA\" >\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648\u062c\u0648\u062f \u0648\/\u06cc\u0627 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0635\u0641\u0627\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C_%D8%B7%D9%88%D9%84_%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1_%D8%AF%D8%B1_%DB%8C%DA%A9_%D9%88%DB%8C%DA%98%DA%AF%DB%8C\" >\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0637\u0648\u0644 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u062f\u0631 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C\" >\u06a9\u0627\u0631 \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%A2%DB%8C%D8%A7_%D8%B1%D8%A7%D9%87_%D8%A2%D8%B3%D8%A7%D9%86_%D8%AA%D8%B1%DB%8C_%D9%88%D8%AC%D9%88%D8%AF_%D9%86%D8%AF%D8%A7%D8%B1%D8%AF%D8%9F\" >\u0622\u06cc\u0627 \u0631\u0627\u0647 \u0622\u0633\u0627\u0646 \u062a\u0631\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u061f<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/exception-handling-and-validations-in-rails-and-how-to-display-errors-to-users-505l\/#%D8%AF%D8%B1_%D9%82%D8%B3%D9%85%D8%AA_%D8%AC%D9%84%D9%88%DB%8C%DB%8C_%E2%80%A6\" >\u062f\u0631 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u06cc\u06cc &#8230;<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%B3%DB%8C%D8%AF%DA%AF%DB%8C_%D8%A8%D9%87_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7\"><\/span>\n<p>  \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u0633\u062a\u062b\u0646\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc \u06a9\u0631\u0634\u200c\u06a9\u0646\u0646\u062f\u0647 \u0628\u062f\u0648\u0646 \u0645\u0634\u06a9\u0644 \u0647\u0633\u062a\u0646\u062f.  \u0628\u0647 \u0637\u0648\u0631 \u0645\u0639\u0645\u0648\u0644 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u0632 \u062e\u0631\u0627\u0628 \u0634\u062f\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u062e\u0637\u0627 \u0648\u0627\u06a9\u0646\u0634 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u0645.  \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 &#8220;\u062f\u0633\u062a \u0632\u062f\u0646&#8221; \u0645\u06cc \u06af\u0648\u06cc\u0646\u062f (\u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 &#8220;\u0646\u062c\u0627\u062a&#8221; \u06cc\u0627 &#8220;\u06af\u0631\u0641\u062a\u0646&#8221; \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0634\u0646\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0646\u062d\u0648 \u0627\u0635\u0644\u06cc \u0686\u06cc\u0632\u06cc \u0634\u0628\u06cc\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"c1\">#Imagine we write a function that would be called when an exception is raised.<\/span>\n<span class=\"k\">def<\/span> <span class=\"nf\">handle_exception<\/span>\n  <span class=\"nb\">puts<\/span> <span class=\"s2\">\"Got an exception, but I'm handling it!\"<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"k\">begin<\/span>\n  <span class=\"c1\"># Any exceptions in here...<\/span>\n<span class=\"k\">rescue<\/span>\n  <span class=\"c1\"># ...will trigger this block of code<\/span>\n  <span class=\"n\">handle_exception<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"c1\"># =&gt; \"Got an exception, but I'm handling it!\"<\/span>\n\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0645\u0637\u0631\u062d \u0634\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 &#8220;\u0631\u0633\u062a\u06af\u0627\u0631\u06cc&#8221; \u0627\u0632 \u06a9\u0627\u0631 \u0646\u0645\u06cc \u0627\u0641\u062a\u062f.  \u0628\u0647 \u062c\u0627\u06cc \u062e\u0631\u0627\u0628 \u0634\u062f\u0646\u060c \u0631\u0648\u0628\u06cc \u06a9\u062f \u0631\u0627 \u062f\u0631 \u0642\u0633\u0645\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f <code>rescue<\/code> \u0628\u0644\u0648\u06a9\u060c \u06a9\u0647 \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc \u06a9\u0646\u062f.  \u0627\u06cc\u0646 \u062e\u06cc\u0644\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062a\u0645\u0627\u0645 \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0647\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u0645\u0627 \u0628\u06af\u0648\u06cc\u062f \u0645\u0634\u06a9\u0644\u06cc \u067e\u06cc\u0634 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a <em>\u0686\u06cc<\/em> \u0627\u0634\u062a\u0628\u0627\u0647 \u0631\u0641\u062a<\/p>\n<p>\u0647\u0631 \u06af\u0648\u0646\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646\u0686\u0647 \u0627\u0634\u062a\u0628\u0627\u0647 \u0631\u062e \u062f\u0627\u062f\u0647 \u0627\u0633\u062a \u062f\u0631 \u062f\u0627\u062e\u0644 \u06cc\u06a9 \u0642\u0631\u0627\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f <strong>\u0634\u06cc \u0627\u0633\u062a\u062b\u0646\u0627<\/strong>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B4%DB%8C%D8%A7%D8%A1_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%DB%8C%DB%8C\"><\/span>\n<p>  \u0627\u0634\u06cc\u0627\u0621 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0634\u06cc\u0627\u0621 \u0627\u0633\u062a\u062b\u0646\u0627 (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 SyntaxError \u06cc\u0627 ArgumentError) \u0627\u0634\u06cc\u0627\u0621 Ruby \u0645\u0639\u0645\u0648\u0644\u06cc \u0647\u0633\u062a\u0646\u062f (\u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u06a9\u0644\u0627\u0633 Exception).  \u0622\u0646\u0647\u0627 \u062d\u0627\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f &#8220;\u0686\u0647 \u0627\u0634\u062a\u0628\u0627\u0647\u06cc \u0631\u062e \u062f\u0627\u062f&#8221; \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0646\u062c\u0627\u062a \u06cc\u0627\u0641\u062a\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u06cc\u06a9 \u0634\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u060c <code>rescue<\/code> \u0646\u062d\u0648 \u06a9\u0645\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0633\u062a.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644\u060c \u0645\u0627 \u0627\u0632 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc ZeroDivisionError \u0646\u062c\u0627\u062a \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"c1\">#Rescues all errors, and assigns the exception object to an `error` variable<\/span>\n<span class=\"k\">rescue<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"n\">error<\/span>\n\n<span class=\"c1\">#Rescues only ZeroDivisionError and assigns the exception object to an `error` variable<\/span>\n<span class=\"k\">rescue<\/span> <span class=\"no\">ZeroDivisionError<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"n\">error<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u062b\u0627\u0644 \u062f\u0648\u0645 \u0628\u0627\u0644\u0627\u060c <code>ZeroDivisionError<\/code> \u06a9\u0644\u0627\u0633 \u0634\u06cc \u062f\u0631 \u0627\u0633\u062a <code>error<\/code> \u0645\u062a\u063a\u06cc\u0631\u060c<code>ZeroDivisionError<\/code> \u062e\u0648\u062f \u0632\u06cc\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 <code>StandardError<\/code>.  \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u062a\u0631\u06cc\u0646 \u0627\u0646\u0648\u0627\u0639 \u062e\u0637\u0627 \u062f\u0631 \u0631\u0648\u0628\u06cc \u0645\u0627\u0646\u0646\u062f <code>ArgumentError<\/code> \u0648 <code>NameError<\/code> \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0647\u0633\u062a\u0646\u062f <code>StandardError<\/code>.  \u062f\u0631 \u062d\u0642\u06cc\u0642\u062a\u060c <code>StandardError<\/code> \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0628\u0631\u0627\u06cc \u0631\u0648\u0628\u06cc \u0627\u0633\u062a \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 <code>Exception<\/code> \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0628\u0647 \u0635\u0631\u0627\u062d\u062a \u0646\u0627\u0645\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">begin<\/span>\n  <span class=\"n\">do_something<\/span>\n<span class=\"k\">rescue<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"n\">error<\/span>\n  <span class=\"c1\"># This is the same as rescuing StandardError<\/span>\n  <span class=\"c1\"># and all of its subclasses<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062d\u0627\u0644\u0627.. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0639\u0642\u0628 \u0628\u0631\u06af\u0631\u062f\u06cc\u0645 \u0648 \u0646\u06af\u0627\u0647\u06cc \u062f\u0642\u06cc\u0642 \u062a\u0631 \u0628\u0647 \u0634\u06cc \u0627\u0633\u062a\u062b\u0646\u0627 \u0628\u0631\u0627\u06cc \u0628\u06cc\u0627\u0646\u062f\u0627\u0632\u06cc\u0645 <code>ZeroDivisionError<\/code><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">begin<\/span>\n  <span class=\"c1\"># Any exceptions in here...<\/span>\n  <span class=\"mi\">1<\/span> <span class=\"o\">\/<\/span> <span class=\"mi\">0<\/span>\n<span class=\"k\">rescue<\/span> <span class=\"no\">ZeroDivisionError<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"n\">error<\/span>\n  <span class=\"nb\">puts<\/span> <span class=\"s2\">\"Exception Class: <\/span><span class=\"si\">#{<\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">class<\/span><span class=\"si\">}<\/span><span class=\"s2\">\"<\/span>\n  <span class=\"nb\">puts<\/span> <span class=\"s2\">\"Exception Message: <\/span><span class=\"si\">#{<\/span><span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">message<\/span><span class=\"si\">}<\/span><span class=\"s2\">\"<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"c1\"># Exception Class: ZeroDivisionError<\/span>\n<span class=\"c1\"># Exception Message: divided by 0<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u062b\u0631 \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc Ruby \u062d\u0627\u0648\u06cc \u067e\u06cc\u0627\u0645\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062c\u0632\u0626\u06cc\u0627\u062a \u0627\u0634\u062a\u0628\u0627\u0647 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%D9%87%D8%A7%DB%8C_%D8%AE%D9%88%D8%AF%D8%AA%D8%A7%D9%86\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u062e\u0648\u062f\u062a\u0627\u0646<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0634\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0646\u06cc\u062f!  \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0641\u0632\u0627\u06cc\u0634 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 &#8230; \u062e\u0648\u0628 &#8230; &#8220;\u0627\u0641\u0632\u0627\u06cc\u0634&#8221; \u0645\u06cc \u06af\u0648\u06cc\u0646\u062f.  \u0634\u0645\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0627 \u062a\u0645\u0627\u0633 \u0628\u0627 <code>raise<\/code> \u0631\u0648\u0634.<\/p>\n<p>\u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0645\u0637\u0631\u062d \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u0634\u0645\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u0645\u06cc \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u06a9\u062f\u0627\u0645 \u0646\u0648\u0639 \u0627\u0633\u062a\u062b\u0646\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.  \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u06cc\u0627\u0645 \u062e\u0637\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">begin<\/span>\n  <span class=\"c1\">#raises an ArgumentError with the message \"You screwed up!\"<\/span>\n  <span class=\"k\">raise<\/span> <span class=\"no\">ArgumentError<\/span><span class=\"p\">.<\/span><span class=\"nf\">new<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"You screwed up!\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">rescue<\/span> <span class=\"no\">ArgumentError<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"n\">error<\/span>\n  <span class=\"nb\">puts<\/span> <span class=\"n\">error<\/span><span class=\"p\">.<\/span><span class=\"nf\">message<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"c1\"># =&gt; \"You screwed up!\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%D9%87%D8%A7%DB%8C_%D8%B3%D9%81%D8%A7%D8%B1%D8%B4%DB%8C\"><\/span>\n<p>  \u0627\u06cc\u062c\u0627\u062f \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc \u0631\u0648\u0628\u06cc \u0639\u0627\u0644\u06cc \u0647\u0633\u062a\u0646\u062f\u060c \u0627\u0645\u0627 \u0647\u0646\u0648\u0632 \u0627\u0632 \u0646\u0638\u0631 \u062f\u0627\u0645\u0646\u0647 \u0645\u062d\u062f\u0648\u062f \u0647\u0633\u062a\u0646\u062f \u0648 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0647\u0631 \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0645\u06a9\u0646 \u0631\u0627 \u067e\u0648\u0634\u0634 \u062f\u0647\u0646\u062f.<\/p>\n<p>\u0641\u0631\u0636 \u06a9\u0646\u06cc\u062f \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0648\u0628 \u0647\u0633\u062a\u06cc\u062f \u0648 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u06cc\u06a9 \u06a9\u0627\u0631\u0628\u0631 \u0633\u0639\u06cc \u0645\u06cc \u06a9\u0646\u062f \u0628\u0647 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0633\u0627\u06cc\u062a \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0646\u062f \u06a9\u0647 \u0646\u0628\u0627\u06cc\u062f \u0628\u0647 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u060c \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f\u061f  \u0647\u06cc\u0686 \u06cc\u06a9 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc Ruby \u0648\u0627\u0642\u0639\u0627\u064b \u0645\u0646\u0627\u0633\u0628 \u0646\u06cc\u0633\u062a\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0634\u0631\u0637 \u0634\u0645\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc\u060c \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062c\u062f\u06cc\u062f \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0631\u062b \u0645\u06cc \u0628\u0631\u062f <code>StandardError<\/code>.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">PermissionDeniedError<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">StandardError<\/span>\n\n  <span class=\"k\">def<\/span> <span class=\"nf\">initialize<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n    <span class=\"c1\"># Call the parent's(StandardError) constructor to set the message<\/span>\n    <span class=\"k\">super<\/span><span class=\"p\">(<\/span><span class=\"n\">message<\/span><span class=\"p\">)<\/span>\n  <span class=\"k\">end<\/span>\n\n<span class=\"k\">end<\/span>\n\n<span class=\"c1\"># Then, when the user tries to do something they don't<\/span>\n<span class=\"c1\"># have permission to do, you might do something like this:<\/span>\n<span class=\"k\">raise<\/span> <span class=\"no\">PermissionDeniedError<\/span><span class=\"p\">.<\/span><span class=\"nf\">new<\/span><span class=\"p\">(<\/span><span class=\"s2\">\"Permission Denied!!!\"<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B3%D9%84%D8%B3%D9%84%D9%87_%D9%85%D8%B1%D8%A7%D8%AA%D8%A8_%D8%B7%D8%A8%D9%82%D8%A7%D8%AA_%D8%A7%D8%B3%D8%AA%D8%AB%D9%86%D8%A7%DB%8C%DB%8C\"><\/span>\n<p>  \u0633\u0644\u0633\u0644\u0647 \u0645\u0631\u0627\u062a\u0628 \u0637\u0628\u0642\u0627\u062a \u0627\u0633\u062a\u062b\u0646\u0627\u06cc\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0628\u0627 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0627\u0632 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0633\u0641\u0627\u0631\u0634\u06cc \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645 <code>StandardError<\/code>\u060c \u06a9\u0647 \u062e\u0648\u062f \u0632\u06cc\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 <code>Exception<\/code>.<br \/>\u0627\u06af\u0631 \u0628\u0647 \u0633\u0644\u0633\u0644\u0647 \u0645\u0631\u0627\u062a\u0628 \u06a9\u0644\u0627\u0633 \u0647\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f\u060c \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f \u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0627\u0633\u062a <code>Exception<\/code>.<\/p>\n<p><\/p>\n<p>\u0646\u06af\u0631\u0627\u0646 \u0646\u0628\u0627\u0634\u06cc\u062f\u060c \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f.  \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0645\u0647\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0628\u0633\u06cc\u0627\u0631 \u062e\u0648\u0628\u06cc \u0628\u0627 \u0633\u0644\u0633\u0644\u0647 \u0645\u0631\u0627\u062a\u0628 \u0637\u0628\u0642\u0627\u062a\u06cc \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc \u0622\u0634\u0646\u0627 \u0647\u0633\u062a\u06cc\u062f.<\/p>\n<p><strong>\u0646\u062c\u0627\u062a \u062e\u0637\u0627\u0647\u0627\u06cc \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062e\u0627\u0635\u060c \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0646\u06cc\u0632 \u0646\u062c\u0627\u062a \u0645\u06cc \u062f\u0647\u062f.<\/strong><\/p>\n<p>\u0648\u0642\u062a\u06cc StandardError \u0631\u0627 \u0646\u062c\u0627\u062a \u0645\u06cc \u062f\u0647\u06cc\u062f\u060c \u0646\u0647 \u062a\u0646\u0647\u0627 \u0627\u0633\u062a\u062b\u0646\u0627\u0626\u0627\u062a \u0631\u0627 \u0646\u062c\u0627\u062a \u0645\u06cc \u062f\u0647\u06cc\u062f <code>StandardError<\/code> \u0628\u0644\u06a9\u0647 \u0641\u0631\u0632\u0646\u062f\u0627\u0646\u0634 \u0646\u06cc\u0632.  \u0627\u06af\u0631 \u0628\u0647 \u0646\u0645\u0648\u062f\u0627\u0631 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f\u060c \u062e\u0648\u0627\u0647\u06cc\u062f \u062f\u06cc\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0632\u06cc\u0627\u062f\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f: ArgumentError\u060c NameError\u060c TypeError \u0648 \u063a\u06cc\u0631\u0647.<\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0627\u06af\u0631 \u0642\u0631\u0627\u0631 \u0628\u0648\u062f \u0646\u062c\u0627\u062a \u062f\u0647\u06cc\u062f <code>Exception<\/code>\u060c \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u06a9 \u062a\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0631\u0627 \u0646\u062c\u0627\u062a \u062f\u0647\u06cc\u062f\u060c \u06a9\u0647 \u06cc\u06a9 <strong>\u0628\u062f<\/strong> \u0627\u0646\u062f\u06cc\u0634\u0647.  \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0646\u06a9\u0646!<\/p>\n<p>\u0631\u0648\u0628\u06cc \u0628\u0631\u0627\u06cc \u0686\u06cc\u0632\u0647\u0627\u06cc\u06cc \u063a\u06cc\u0631 \u0627\u0632 \u062e\u0637\u0627 \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u0646\u062c\u0627\u062a <em>\u0647\u0645\u0647<\/em> \u062e\u0637\u0627\u0647\u0627 \u0628\u0627\u0639\u062b \u0645\u06cc \u0634\u0648\u062f \u06a9\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0628\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0639\u062c\u06cc\u0628\u06cc \u062e\u0631\u0627\u0628 \u0634\u0648\u062f.  \u0647\u0645\u06cc\u0634\u0647 \u0646\u062c\u0627\u062a <em>\u062e\u0627\u0635<\/em> \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627.  \u062f\u0631 \u0635\u0648\u0631\u062a \u0634\u06a9\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>StandardError<\/code>.<\/p>\n<hr\/>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u062f\u0631\u06a9 \u062f\u0631\u0633\u062a\u06cc \u0627\u0632 \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u062f\u0627\u0631\u06cc\u0645\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 <strong>\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627<\/strong> \u0648 \u0686\u06af\u0648\u0646\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0628\u0647 \u0647\u0645 \u0645\u0631\u062a\u0628\u0637 \u0627\u0633\u062a<\/p>\n<p>\u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u0632\u0646\u062f\u06af\u06cc \u0631\u0648\u0632\u0645\u0631\u0647 \u062e\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0635\u0648\u0631\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0627\u0646\u062c\u0627\u0645 \u0634\u0648\u0646\u062f.  \u0686\u0647 \u062e\u0631\u06cc\u062f\u060c \u0628\u0627\u0646\u06a9\u062f\u0627\u0631\u06cc\u060c \u0631\u0632\u0631\u0648 \u0634\u0627\u0645 \u0648 \u063a\u06cc\u0631\u0647. \u0627\u0645\u0627 \u062f\u0631 \u0642\u0644\u0628 \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627 \u0686\u06cc\u0633\u062a\u061f <strong>\u062f\u0627\u062f\u0647 \u0647\u0627<\/strong>\u060c \u0627\u06cc\u0646 \u0647\u0645\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>\u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0628\u0647 \u062e\u0648\u0628\u06cc \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f\u060c \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0627\u06cc\u062f \u062a\u0636\u0645\u06cc\u0646 \u0634\u0648\u062f.  \u0627\u06cc\u0646 \u062a\u0648\u0633\u0637 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f <strong>\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc<\/strong> \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0628\u0644 \u0627\u0632 \u0630\u062e\u06cc\u0631\u0647 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u062f\u0627\u0646\u06cc\u062f Rails \u0628\u0631 \u0627\u0633\u0627\u0633 \u0645\u0639\u0645\u0627\u0631\u06cc MVC \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a.  \u0631\u0627 <strong>\u0645<\/strong>\u060c \u06a9\u0647 \u0647\u0633\u062a <strong>\u0645\u062a\u0631<\/strong>\u0644\u0627\u06cc\u0647 odel\u060c \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0634\u06cc\u0627\u0621 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u06cc \u067e\u0631\u062f\u0627\u0632\u062f.  \u062f\u0631 Rails\u060c \u0627\u06cc\u0646 \u0644\u0627\u06cc\u0647 \u0628\u0647 \u0637\u0648\u0631 \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u062a\u0648\u0633\u0637 Active Record \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c Active Record \u0628\u0627 \u0627\u0646\u062c\u0627\u0645 \u0648\u0638\u06cc\u0641\u0647 \u062d\u06cc\u0627\u062a\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0633\u0631\u0648\u06a9\u0627\u0631 \u062f\u0627\u0631\u062f.<\/p>\n<p>\u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0647\u0627 \u0635\u0631\u0641\u0627\u064b \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u0642\u0648\u0627\u0646\u06cc\u0646 \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0628\u0631\u062e\u06cc \u0645\u0639\u06cc\u0627\u0631\u0647\u0627 \u0645\u0639\u062a\u0628\u0631 \u0628\u0648\u062f\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u0646\u062f.  \u0647\u0631 \u0634\u06cc \u0645\u062f\u0644 \u0634\u0627\u0645\u0644 \u06cc\u06a9 <em>\u062e\u0637\u0627\u0647\u0627<\/em> \u0645\u062c\u0645\u0648\u0639\u0647.  \u062f\u0631 \u0645\u062f\u0644 \u0647\u0627\u06cc \u0645\u0639\u062a\u0628\u0631\u060c \u0627\u06cc\u0646 \u0645\u062c\u0645\u0648\u0639\u0647 \u0641\u0627\u0642\u062f \u062e\u0637\u0627\u0633\u062a \u0648 \u062e\u0627\u0644\u06cc \u0627\u0633\u062a.  \u0648\u0642\u062a\u06cc \u0642\u0648\u0627\u0646\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0631\u0627 \u0631\u0648\u06cc \u06cc\u06a9 \u0645\u062f\u0644 \u062e\u0627\u0635 \u0627\u0639\u0644\u0627\u0645 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f \u0648 \u0622\u0646 \u0645\u062f\u0644 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0635\u0648\u06cc\u0628 \u0634\u0648\u062f\u060c \u06cc\u06a9 <strong>\u0627\u0633\u062a\u062b\u0646\u0627<\/strong> \u0645\u0637\u0631\u062d \u062e\u0648\u0627\u0647\u062f \u0634\u062f \u0648 \u0645\u062c\u0645\u0648\u0639\u0647 \u062e\u0637\u0627\u0647\u0627 \u062d\u0627\u0648\u06cc \u062e\u0637\u0627\u0647\u0627\u06cc\u06cc \u0645\u0637\u0627\u0628\u0642 \u0628\u0627 \u0642\u0648\u0627\u0646\u06cc\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0634\u0645\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f\u060c \u0648 \u0627\u06cc\u0646 \u0645\u062f\u0644 \u0645\u0639\u062a\u0628\u0631 \u0646\u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.  \u06cc\u06a9 \u0645\u062b\u0627\u0644 \u0633\u0627\u062f\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0622\u06cc\u0627 \u06cc\u06a9 \u0641\u0631\u0645 \u0622\u0646\u0644\u0627\u06cc\u0646 \u062a\u0645\u0627\u0645 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0631\u0633\u0627\u0644 \u062f\u0627\u0631\u062f \u06cc\u0627 \u062e\u06cc\u0631.  \u0627\u06af\u0631 \u0642\u0633\u0645\u062a\u06cc \u062e\u0627\u0644\u06cc \u0628\u0645\u0627\u0646\u062f\u060c \u067e\u06cc\u063a\u0627\u0645 \u062e\u0637\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u062f \u0622\u0646 \u0631\u0627 \u067e\u0631 \u06a9\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1_%D8%B3%D9%86%D8%AC%DB%8C_%D9%87%D8%A7%DB%8C_%D8%B3%D8%A7%D8%AF%D9%87\"><\/span>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0647\u0627\u06cc \u0633\u0627\u062f\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u062f\u0648 \u0631\u0648\u0634 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0633\u0627\u0633\u06cc \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C_%D9%88%D8%AC%D9%88%D8%AF_%D9%88%DB%8C%D8%A7_%D8%B9%D8%AF%D9%85_%D9%88%D8%AC%D9%88%D8%AF_%D8%B5%D9%81%D8%A7%D8%AA\"><\/span>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648\u062c\u0648\u062f \u0648\/\u06cc\u0627 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u0635\u0641\u0627\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0648\u062c\u0648\u062f (\u06cc\u0627 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f) \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u06a9\u0646\u062f.  \u062f\u0631 \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631\u060c \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0628\u0631\u0631\u0633\u06cc \u0647\u0633\u062a\u06cc\u0645 \u06a9\u0647 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0622\u06cc\u0627  <code>username<\/code> \u0648\u06cc\u0698\u06af\u06cc \u0646\u0647 \u062a\u0646\u0647\u0627 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a\u060c \u0628\u0644\u06a9\u0647 \u0645\u0646\u062d\u0635\u0631 \u0628\u0647 \u0641\u0631\u062f \u0627\u0633\u062a.  \u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u062a\u0627 \u0627\u0632 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062a\u06a9\u0631\u0627\u0631\u06cc \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f.  \u0634\u0645\u0627 \u0627\u06cc\u0646\u0647\u0627 \u0631\u0627 \u0628\u0627 <code>presence<\/code> \u0648 <code>uniqueness<\/code> \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>validates<\/code> \u06a9\u0644\u0645\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0648 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0622\u0646 \u0646\u0627\u0645 \u0648\u06cc\u0698\u06af\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">User<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ApplicationRecord<\/span>\n   <span class=\"c1\">#validates presence and uniqueness of a username upon <\/span>\n   <span class=\"c1\">#creation<\/span>\n   <span class=\"n\">validates<\/span> <span class=\"ss\">:username<\/span><span class=\"p\">,<\/span> <span class=\"ss\">presence: <\/span><span class=\"kp\">true<\/span><span class=\"p\">,<\/span> <span class=\"ss\">uniqueness: <\/span><span class=\"kp\">true<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C_%D8%B7%D9%88%D9%84_%DA%A9%D8%A7%D8%B1%D8%A7%DA%A9%D8%AA%D8%B1_%D8%AF%D8%B1_%DB%8C%DA%A9_%D9%88%DB%8C%DA%98%DA%AF%DB%8C\"><\/span>\n<p>  \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0637\u0648\u0644 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u062f\u0631 \u06cc\u06a9 \u0648\u06cc\u0698\u06af\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u06cc\u06a9 <code>password<\/code> \u0648\u06cc\u0698\u06af\u06cc\u060c \u0645\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0622\u06cc\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u06cc\u0645\u060c \u0627\u0644\u0632\u0627\u0645\u0627\u062a \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0645\u0627 \u0631\u0627 \u0628\u0631\u0622\u0648\u0631\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06cc\u0627 \u062e\u06cc\u0631.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u0645\u0627 \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u062d\u062f\u0627\u0642\u0644 \u0637\u0648\u0644 \u0622\u0646 8 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0628\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u0646\u062f\u0647 \u0637\u0648\u0644 \u0628\u0627\u0634\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">User<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ApplicationRecord<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:username<\/span><span class=\"p\">,<\/span> <span class=\"ss\">presence: <\/span><span class=\"kp\">true<\/span><span class=\"p\">,<\/span> <span class=\"ss\">uniqueness: <\/span><span class=\"kp\">true<\/span>\n  <span class=\"c1\">#validates minimum length of 8 characters<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:password<\/span><span class=\"p\">,<\/span> <span class=\"ss\">length: <\/span><span class=\"p\">{<\/span> <span class=\"ss\">minimum: <\/span><span class=\"mi\">8<\/span> <span class=\"p\">}<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%DA%A9%D8%A7%D8%B1_%D8%A8%D8%A7_%D8%AE%D8%B7%D8%A7%D9%87%D8%A7%DB%8C_%D8%A7%D8%B9%D8%AA%D8%A8%D8%A7%D8%B1%D8%B3%D9%86%D8%AC%DB%8C\"><\/span>\n<p>  \u06a9\u0627\u0631 \u0628\u0627 \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u067e\u0633 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u062e\u0637\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0631\u062e\u0648\u0631\u062f \u0645\u06cc \u06a9\u0646\u06cc\u062f\u061f  \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0642\u0628\u0644\u0627 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0646\u0627\u0645\u0648\u0641\u0642 \u0628\u0627\u0634\u062f\u060c \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0645\u0637\u0631\u062d \u0645\u06cc \u0634\u0648\u062f \u0648 \u06cc\u06a9 <code>errors<\/code> \u0645\u062c\u0645\u0648\u0639\u0647 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f. <\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0648\u0642\u062a\u06cc \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0627 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u06a9\u0645\u062a\u0631 \u0627\u0632 8 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u0686\u0647 \u0627\u062a\u0641\u0627\u0642\u06cc \u0645\u06cc \u0627\u0641\u062a\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">User<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ApplicationRecord<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:username<\/span><span class=\"p\">,<\/span> <span class=\"ss\">presence: <\/span><span class=\"kp\">true<\/span><span class=\"p\">,<\/span> <span class=\"ss\">uniqueness: <\/span><span class=\"kp\">true<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:password<\/span><span class=\"p\">,<\/span> <span class=\"ss\">length: <\/span><span class=\"p\">{<\/span> <span class=\"ss\">minimum: <\/span><span class=\"mi\">8<\/span> <span class=\"p\">}<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"p\">.<\/span><span class=\"nf\">create<\/span><span class=\"p\">(<\/span><span class=\"ss\">username: <\/span><span class=\"n\">admin<\/span><span class=\"p\">,<\/span> <span class=\"ss\">password: <\/span><span class=\"s2\">\"Welcome\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"n\">pp<\/span> <span class=\"n\">user<\/span>\n\n<span class=\"c1\"># =&gt; #&lt;User:0x00007fd0cca748e8<\/span>\n<span class=\"c1\"># id: nil,<\/span>\n<span class=\"c1\"># username: \"admin\",<\/span>\n<span class=\"c1\"># password: \"Welcome\",<\/span>\n<span class=\"c1\"># created_at: nil,<\/span>\n<span class=\"c1\"># updated_at: nil&gt; <\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0686\u06cc\u0632\u06cc \u0631\u0627 \u06a9\u0647 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06cc\u06a9 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u06cc\u0645 <code>User<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0627\u0645\u0627 \u0628\u0627 \u0628\u0631\u0631\u0633\u06cc \u062f\u0642\u06cc\u0642 \u062a\u0631 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 <code>id<\/code> \u0648\u06cc\u0698\u06af\u06cc \u0627\u0633\u062a <code>nil<\/code>\u060c \u0628\u0647 \u0645\u0639\u0646\u06cc <code>User<\/code> \u0646\u0645\u0648\u0646\u0647 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f.  \u062f\u0627\u0646\u0633\u062a\u0646 \u0622\u0646 \u062e\u0648\u0628 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u0631\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0627\u06cc\u0646 \u0631\u06a9\u0648\u0631\u062f \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.  \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627 \u0648 \u062f\u06cc\u062f\u0646 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u062f\u0631 \u0645\u0648\u0631\u062f \u062e\u0637\u0627\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 bang(!) \u0631\u0627 \u0628\u0647 \u0645\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 <code>create<\/code> \u0631\u0648\u0634:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">User<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ApplicationRecord<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:username<\/span><span class=\"p\">,<\/span> <span class=\"ss\">presence: <\/span><span class=\"kp\">true<\/span><span class=\"p\">,<\/span> <span class=\"ss\">uniqueness: <\/span><span class=\"kp\">true<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:password<\/span><span class=\"p\">,<\/span> <span class=\"ss\">length: <\/span><span class=\"p\">{<\/span> <span class=\"ss\">minimum: <\/span><span class=\"mi\">8<\/span> <span class=\"p\">}<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"p\">.<\/span><span class=\"nf\">create!<\/span><span class=\"p\">(<\/span><span class=\"ss\">username: <\/span><span class=\"n\">admin<\/span><span class=\"p\">,<\/span> <span class=\"ss\">password: <\/span><span class=\"s2\">\"Welcome\"<\/span><span class=\"p\">)<\/span>\n\n<span class=\"c1\"># =&gt; ActiveRecord::RecordInvalid (Validation failed: Password is # too short (minimum is 8 characters)) <\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 \u06cc\u06a9 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>RecordInvalid<\/code> \u0627\u0633\u062a\u062b\u0646\u0627\u060c \u06cc\u06a9\u06cc \u0627\u0632 \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0632\u06cc\u0631 \u06a9\u0644\u0627\u0633 \u0647\u0627\u06cc \u0627\u0633\u062a\u062b\u0646\u0627 <code>ActiveRecordError<\/code>\u060c \u06a9\u0647 \u062e\u0648\u062f \u0632\u06cc\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 <code>StandardError<\/code>.  \u0644\u06cc\u0633\u062a \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627\u06cc Active Record \u0631\u0627 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f.<\/p>\n<p><code>RecordInvalid<\/code>  \u0632\u0645\u0627\u0646\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc \u06cc\u0627\u0628\u062f \u06a9\u0647 \u06cc\u06a9 \u0631\u06a9\u0648\u0631\u062f \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0646\u0627\u0645\u0648\u0641\u0642 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u0648\u062f.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0645\u0627 \u062e\u06cc\u0644\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0628\u0648\u062f.<\/p>\n<p>\u06cc\u0627\u062f\u062a\u0627\u0646 \u0647\u0633\u062a \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f\u0645 \u06a9\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 \u0627\u06cc \u0627\u0632 \u062e\u0637\u0627\u0647\u0627 \u0646\u06cc\u0632 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u0634\u0648\u062f\u061f  \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0622\u0646 \u0622\u0645\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">User<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ApplicationRecord<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:username<\/span><span class=\"p\">,<\/span> <span class=\"ss\">presence: <\/span><span class=\"kp\">true<\/span><span class=\"p\">,<\/span> <span class=\"ss\">uniqueness: <\/span><span class=\"kp\">true<\/span>\n  <span class=\"n\">validates<\/span> <span class=\"ss\">:password<\/span><span class=\"p\">,<\/span> <span class=\"ss\">length: <\/span><span class=\"p\">{<\/span> <span class=\"ss\">minimum: <\/span><span class=\"mi\">8<\/span> <span class=\"p\">}<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"p\">.<\/span><span class=\"nf\">create!<\/span><span class=\"p\">(<\/span><span class=\"ss\">username: <\/span><span class=\"kp\">nil<\/span><span class=\"p\">,<\/span> <span class=\"ss\">password: <\/span><span class=\"s2\">\"Welcome\"<\/span><span class=\"p\">)<\/span>\n<span class=\"c1\"># =&gt; ActiveRecord::RecordInvalid (Validation failed: Username can't be blank, Password is too short (minimum is 8 characters))<\/span>\n\n<span class=\"c1\">#Accesses an array of error messages from the `errors` object.<\/span>\n<span class=\"n\">user<\/span><span class=\"p\">.<\/span><span class=\"nf\">errors<\/span><span class=\"p\">.<\/span><span class=\"nf\">full_messages<\/span>\n<span class=\"c1\"># =&gt; [\"Username can't be blank\", \"Password is too short (minimum is 8 characters)\"] <\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0627\u0634\u062a\u0646 \u0622\u0631\u0627\u06cc\u0647\u200c\u0627\u06cc \u0627\u0632 \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 frontend \u0627\u0631\u062a\u0628\u0627\u0637 \u062f\u0647\u06cc\u0645.<\/p>\n<hr\/>\n<p>\u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u06cc\u0645 \u0628\u0647 \u062e\u0648\u062f\u0645\u0627\u0646 <code>User<\/code> \u0645\u062f\u0644\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f a \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645 <code>create<\/code> \u0631\u0648\u0634 \u0627\u06cc\u062c\u0627\u062f \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062c\u062f\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">def<\/span> <span class=\"nf\">create<\/span>\n    <span class=\"c1\">#remember to append a \"!\" to your create method<\/span>\n    <span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"p\">.<\/span><span class=\"nf\">create!<\/span><span class=\"p\">(<\/span><span class=\"n\">user_params<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">session<\/span><span class=\"p\">[<\/span><span class=\"ss\">:user_id<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">user<\/span><span class=\"p\">.<\/span><span class=\"nf\">id<\/span>\n    <span class=\"n\">render<\/span> <span class=\"ss\">json: <\/span><span class=\"n\">user<\/span><span class=\"p\">,<\/span> <span class=\"ss\">status: :created<\/span>\n<span class=\"k\">end<\/span>\n\n<span class=\"kp\">private<\/span>\n\n<span class=\"k\">def<\/span> <span class=\"nf\">user_params<\/span>\n    <span class=\"n\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">permit<\/span><span class=\"p\">(<\/span><span class=\"ss\">:username<\/span><span class=\"p\">,<\/span> <span class=\"ss\">:password<\/span><span class=\"p\">,<\/span> \n    <span class=\"ss\">:password_confirmation<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0623\u06cc\u06cc\u062f \u0646\u0627\u0645\u0648\u0641\u0642\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u06cc\u06a9 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062e\u0627\u0644\u06cc \u0648\/\u06cc\u0627 \u06cc\u06a9 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u06a9\u0648\u062a\u0627\u0647\u060c a <code>RecordInvalid<\/code> \u0627\u0633\u062a\u062b\u0646\u0627 \u0645\u0637\u0631\u062d \u062e\u0648\u0627\u0647\u062f \u0634\u062f.  \u0627\u06a9\u0646\u0648\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u0646\u0637\u0642 \u0634\u0631\u0637\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627\u0647\u0627 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0645\u0627 \u0631\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u06a9\u0646\u06cc\u0645 <code>create<\/code> \u0631\u0648\u0634:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">def<\/span> <span class=\"nf\">create<\/span>\n  <span class=\"k\">begin<\/span>\n    <span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"p\">.<\/span><span class=\"nf\">create!<\/span><span class=\"p\">(<\/span><span class=\"n\">user_params<\/span><span class=\"p\">)<\/span>\n    <span class=\"n\">session<\/span><span class=\"p\">[<\/span><span class=\"ss\">:user_id<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"n\">user<\/span><span class=\"p\">.<\/span><span class=\"nf\">id<\/span>\n    <span class=\"n\">render<\/span> <span class=\"ss\">json: <\/span><span class=\"n\">user<\/span><span class=\"p\">,<\/span> <span class=\"ss\">status: :created<\/span>\n  <span class=\"k\">rescue<\/span> <span class=\"no\">ActiveRecord<\/span><span class=\"o\">::<\/span><span class=\"no\">RecordInvalid<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"n\">exception<\/span>\n    <span class=\"n\">render<\/span> <span class=\"ss\">json: <\/span><span class=\"p\">{<\/span><span class=\"ss\">errors: \n    <\/span><span class=\"n\">exception<\/span><span class=\"p\">.<\/span><span class=\"nf\">record<\/span><span class=\"p\">.<\/span><span class=\"nf\">errors<\/span><span class=\"p\">.<\/span><span class=\"nf\">full_messages<\/span><span class=\"p\">},<\/span> <span class=\"ss\">status: \n    :unprocessable_entity<\/span>\n  <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0628\u0644\u0648\u06a9 \u0646\u062c\u0627\u062a \u062e\u0648\u062f\u060c \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0639\u0628\u0648\u0631 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u0648 \u0628\u0647 \u0645\u062c\u0645\u0648\u0639\u0647 \u062e\u0637\u0627\u0647\u0627\u06cc \u062e\u0648\u062f \u06a9\u0647 \u062f\u0631 <code>exception.record.errors.full_messages<\/code>.  \u0633\u067e\u0633 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0641\u0631\u0645\u062a JSON \u0632\u06cc\u0628\u0627 \u0645\u06cc \u0628\u0646\u062f\u06cc\u0645 \u062a\u0627 \u0628\u062a\u0648\u0627\u0646 \u0628\u0627 \u06a9\u062f \u0648\u0636\u0639\u06cc\u062a HTTP \u0628\u0647 \u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0627\u0631\u0633\u0627\u0644 \u0634\u0648\u062f. <code>422<\/code> \u0645\u0648\u062c\u0648\u062f\u06cc\u062a \u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u067e\u0631\u062f\u0627\u0632\u0634 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>status:<\/code> \u0631\u0648\u0634.  \u0634\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0641\u0642\u0637 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f <code>status: 422<\/code>\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0642\u0627\u0628\u0644 \u062e\u0648\u0627\u0646\u062f\u0646 \u062a\u0631 \u0627\u0633\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A2%DB%8C%D8%A7_%D8%B1%D8%A7%D9%87_%D8%A2%D8%B3%D8%A7%D9%86_%D8%AA%D8%B1%DB%8C_%D9%88%D8%AC%D9%88%D8%AF_%D9%86%D8%AF%D8%A7%D8%B1%D8%AF%D8%9F\"><\/span>\n<p>  \u0622\u06cc\u0627 \u0631\u0627\u0647 \u0622\u0633\u0627\u0646 \u062a\u0631\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f\u061f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0627\u06cc\u0646 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0633\u0631\u06cc\u0639 \u062a\u06a9\u0631\u0627\u0631 \u0634\u0648\u062f\u060c \u0628\u0647 \u062e\u0635\u0648\u0635 \u0627\u06af\u0631 \u0628\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0645\u062f\u0644 \u0648 \u06a9\u0646\u062a\u0631\u0644\u0631 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f.  \u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0647\u0645\u06cc\u0646 \u0631\u0627 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f <code>begin\/rescue<\/code> \u0645\u0633\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0631 \u0647\u0645\u0647 <code>create<\/code> \u0627\u0642\u062f\u0627\u0645\u0627\u062a \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u06a9\u0646\u062a\u0631\u0644\u0631\u0647\u0627\u06cc \u0634\u0645\u0627 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u0631\u0633\u06cc\u062f\u06af\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u06cc\u06a9 \u0627\u0633\u062a\u062b\u0646\u0627.  \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0632\u0627\u0639 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0646\u0637\u0642 \u0648 \u0622\u0633\u0627\u0646 \u06a9\u0631\u062f\u0646 \u0632\u0646\u062f\u06af\u06cc \u0634\u0645\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/p>\n<p>\u062f\u0631 Rails \u0645\u062a\u0648\u062c\u0647 \u062e\u0648\u0627\u0647\u06cc\u062f \u0634\u062f \u06a9\u0647 \u0647\u0631 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0632 \u0622\u0646 \u0627\u0631\u062b \u0645\u06cc \u0628\u0631\u062f <code>ApplicationController<\/code>\u060c \u0648 \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646 \u062a\u0645\u0627\u0645 \u0631\u0648\u0634 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0627\u0631\u062b \u0645\u06cc \u0628\u0631\u062f.  \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u062d\u0631\u06a9\u062a \u0645\u0646\u0637\u0642\u06cc \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a a \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0632\u06cc\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>RecordInvalid<\/code> \u0627\u0633\u062a\u062b\u0646\u0627 \u062a\u0627 <code>ApplicationController<\/code>\u060c \u0627\u0645\u0627 \u0627\u06cc\u0646 \u0628\u0627\u0631 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u06a9\u0645\u06cc \u0645\u062a\u0641\u0627\u0648\u062a \u0627\u0646\u062c\u0627\u0645 \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight ruby\"><code><span class=\"k\">class<\/span> <span class=\"nc\">ApplicationController<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ActionController<\/span><span class=\"o\">::<\/span><span class=\"no\">API<\/span>\n   <span class=\"c1\">#rescue_from takes an exception class, and an exception <\/span>\n   <span class=\"c1\">#handler method<\/span>\n   <span class=\"n\">rescue_from<\/span> <span class=\"no\">ActiveRecord<\/span><span class=\"o\">::<\/span><span class=\"no\">RecordInvalid<\/span><span class=\"p\">,<\/span> <span class=\"ss\">with: \n   :unprocessable_entity_response<\/span>\n\n   <span class=\"kp\">private<\/span>\n\n   <span class=\"k\">def<\/span> <span class=\"nf\">unprocessable_entity_response<\/span><span class=\"p\">(<\/span><span class=\"n\">exception<\/span><span class=\"p\">)<\/span>\n     <span class=\"n\">render<\/span> <span class=\"ss\">json: <\/span><span class=\"p\">{<\/span><span class=\"ss\">errors: \n     <\/span><span class=\"n\">exception<\/span><span class=\"p\">.<\/span><span class=\"nf\">record<\/span><span class=\"p\">.<\/span><span class=\"nf\">errors<\/span><span class=\"p\">.<\/span><span class=\"nf\">full_messages<\/span><span class=\"p\">},<\/span> <span class=\"ss\">status: \n     :unprocessable_entity<\/span>\n   <span class=\"k\">end<\/span>\n<span class=\"k\">end<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0647 \u062c\u0627\u06cc \u06cc\u06a9 \u0628\u0644\u0648\u06a9 start\/rescue\u060c \u0627\u0632 \u0645\u062a\u062f rescue_from \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0627\u0633\u062a\u062b\u0646\u0627 \u0648 \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06cc\u06a9 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f. <code>with:<\/code> \u06af\u0632\u06cc\u0646\u0647 \u0627\u06cc \u062d\u0627\u0648\u06cc \u0646\u0627\u0645 \u0631\u0648\u0634 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627.  \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0645\u0627 \u06cc\u06a9 \u0645\u062a\u062f \u06a9\u0644\u0627\u0633 \u062e\u0635\u0648\u0635\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u06cc\u0645 <code>unprocessable_entity_response<\/code>.  \u0628\u0646\u0627\u0628\u0631\u0627\u06cc\u0646\u060c \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0627\u0633\u062a\u062b\u0646\u0627\u06cc \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u0645\u0637\u0631\u062d \u0645\u06cc \u0634\u0648\u062f\u060c <code>rescue_from<\/code> \u0634\u06cc \u0627\u0633\u062a\u062b\u0646\u0627 \u0631\u0627 \u0628\u0647 \u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647 \u0627\u0633\u062a\u062b\u0646\u0627 \u06a9\u0647 \u062f\u0631 <code>with:<\/code> \u06af\u0632\u06cc\u0646\u0647.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AF%D8%B1_%D9%82%D8%B3%D9%85%D8%AA_%D8%AC%D9%84%D9%88%DB%8C%DB%8C_%E2%80%A6\"><\/span>\n<p>  \u062f\u0631 \u0642\u0633\u0645\u062a \u062c\u0644\u0648\u06cc\u06cc &#8230;<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627\u0647\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0631 \u0641\u0631\u0627\u0646\u062a \u0627\u0646\u062f \u0628\u0647 \u0633\u0627\u062f\u06af\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0622\u0646\u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0648\u0627\u06a9\u0634\u06cc \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u0646\u062f\u0631 \u0634\u0631\u0637\u06cc \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646\u0647\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631 \u062f\u0631 \u0635\u0648\u0631\u062a \u0628\u0631\u0648\u0632 \u062e\u0637\u0627\u06cc \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0633\u062a.<\/p>\n<p>\u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 \u0641\u0631\u0645 \u062b\u0628\u062a \u0646\u0627\u0645 \u062d\u0633\u0627\u0628 \u0627\u0633\u062a \u06a9\u0647 \u0642\u0628\u0644\u0627\u064b \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 React \u0633\u0627\u062e\u062a\u0647 \u0628\u0648\u062f\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"kd\">function<\/span> <span class=\"nx\">SignupForm<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">username<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setUsername<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">password<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setPassword<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">passwordConfirmation<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setPasswordConfirmation<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> \n    <span class=\"nx\">useState<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"\"<\/span><span class=\"p\">)<\/span>\n\n   <span class=\"c1\">\/\/Any validation errors that are returned will be stored <\/span>\n   <span class=\"k\">in<\/span> <span class=\"nx\">state<\/span><span class=\"p\">...<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"p\">[<\/span><span class=\"nx\">errors<\/span><span class=\"p\">,<\/span> <span class=\"nx\">setErrors<\/span><span class=\"p\">]<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">useState<\/span><span class=\"p\">([])<\/span>\n\n    <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nx\">handleSubmit<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">preventDefault<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"kd\">const<\/span> <span class=\"nx\">res<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">fetch<\/span><span class=\"p\">(<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">\/api\/signup<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span> <span class=\"p\">{<\/span>\n            <span class=\"na\">method<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">POST<\/span><span class=\"dl\">\"<\/span><span class=\"p\">,<\/span>\n            <span class=\"na\">headers<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n                <span class=\"dl\">\"<\/span><span class=\"s2\">Content-Type<\/span><span class=\"dl\">\"<\/span><span class=\"p\">:<\/span> <span class=\"dl\">\"<\/span><span class=\"s2\">application\/json<\/span><span class=\"dl\">\"<\/span>\n            <span class=\"p\">},<\/span>\n            <span class=\"na\">body<\/span><span class=\"p\">:<\/span> <span class=\"nx\">JSON<\/span><span class=\"p\">.<\/span><span class=\"nx\">stringify<\/span><span class=\"p\">({<\/span>\n                <span class=\"nx\">username<\/span><span class=\"p\">,<\/span>\n                <span class=\"nx\">password<\/span><span class=\"p\">,<\/span>\n                <span class=\"na\">password_confirmation<\/span><span class=\"p\">:<\/span> <span class=\"nx\">passwordConfirmation<\/span>\n            <span class=\"p\">})<\/span>\n        <span class=\"p\">})<\/span>\n\n        <span class=\"k\">if<\/span> <span class=\"p\">(<\/span><span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">ok<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">user<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">json<\/span><span class=\"p\">()<\/span>\n            <span class=\"nx\">setUser<\/span><span class=\"p\">(<\/span><span class=\"nx\">user<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n            <span class=\"c1\">\/\/if the fetch request fails and returns an error <\/span>\n            <span class=\"nx\">object<\/span><span class=\"p\">,<\/span> <span class=\"nx\">the<\/span> <span class=\"nx\">errors<\/span> <span class=\"nx\">will<\/span> <span class=\"nx\">be<\/span> <span class=\"nx\">stored<\/span> <span class=\"k\">in<\/span> <span class=\"nx\">state<\/span> <span class=\"nx\">using<\/span> \n            <span class=\"nx\">setErrors<\/span>\n            <span class=\"kd\">const<\/span> <span class=\"nx\">err<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">json<\/span><span class=\"p\">()<\/span>\n            <span class=\"nx\">setErrors<\/span><span class=\"p\">(<\/span><span class=\"nx\">err<\/span><span class=\"p\">.<\/span><span class=\"nx\">errors<\/span><span class=\"p\">)<\/span>\n        <span class=\"p\">}<\/span>\n\n    <span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u062f\u0633\u062a\u0648\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0631\u0646\u062f\u0631 \u0634\u0631\u0637\u06cc \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062e\u0637\u0627\u0647\u0627 \u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u0622\u0646\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>errors<\/code> \u0622\u0631\u0627\u06cc\u0647 \u062f\u0631 \u062d\u0627\u0644\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight javascript\"><code><span class=\"k\">return<\/span> <span class=\"p\">(<\/span>\n   <span class=\"p\">{<\/span><span class=\"nx\">errors<\/span><span class=\"p\">.<\/span><span class=\"nx\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">err<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"o\">&lt;<\/span><span class=\"nx\">Alert<\/span> <span class=\"nx\">key<\/span><span class=\"o\">=<\/span><span class=\"p\">{<\/span><span class=\"nx\">err<\/span><span class=\"p\">}<\/span> <span class=\"nx\">severity<\/span><span class=\"o\">=<\/span><span class=\"dl\">\"<\/span><span class=\"s2\">error<\/span><span class=\"dl\">\"<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">{<\/span><span class=\"nx\">err<\/span><span class=\"p\">}<\/span><span class=\"o\">&lt;<\/span><span class=\"sr\">\/Alert&gt;<\/span><span class=\"se\">)<\/span><span class=\"err\">}\n<\/span><span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u062a\u06cc\u062c\u0647:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/nabfollower.com\/blog\/wp-content\/uploads\/2023\/04\/Exception-Handling-\u0648-Validations-in-Rails-\u0648-\u0646\u062d\u0648\u0647-\u0646\u0645\u0627\u06cc\u0634-\u062e\u0637\u0627\u0647\u0627.gif\" alt=\"\" loading=\"lazy\" width=\"520\" height=\"514\" data-animated=\"true\" title=\"\"><\/p>\n<hr\/>\n<p>https:\/\/guides.rubyonrails.org\/active_record_validations.html<br \/>http:\/\/www.railsstatuscodes.com\/<br \/>https:\/\/www.rubydoc.info\/docs\/rails\/4.1.7\/ActiveRecord\/ActiveRecordError<br \/>https:\/\/ruby-doc.org\/core-2.5.1\/Exception.html<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0645\u0648\u0627\u0631\u062f \u0627\u0633\u062a\u062b\u0646\u0627 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u062f\u0631 Rails \u062e\u0648\u0627\u0647\u06cc\u0645 \u067e\u0631\u062f\u0627\u062e\u062a. \u0631\u0633\u06cc\u062f\u06af\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u0627\u0633\u062a\u062b\u0646\u0627\u0647\u0627 \u0628\u0631\u0627\u06cc \u0622\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a \u0647\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u0648\u0628\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0628\u0627 Rails \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0646\u062f. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u062e\u0637\u0627\u06cc\u06cc \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0647\u06cc\u0645 \u06a9\u0647 \u0646\u0647 \u062a\u0646\u0647\u0627 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u0647\u060c \u0628\u0644\u06a9\u0647 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u0645\u0627\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":20225,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-20224","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/20224","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=20224"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/20224\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/20225"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=20224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=20224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=20224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}