{"id":3047,"date":"2021-11-29T08:07:24","date_gmt":"2021-11-28T23:07:24","guid":{"rendered":"https:\/\/suzutukiblog.com\/?p=3047"},"modified":"2022-01-23T05:25:18","modified_gmt":"2022-01-22T20:25:18","slug":"rails-tutorial11-2","status":"publish","type":"post","link":"https:\/\/suzutukiblog.com\/index.php\/2021\/11\/29\/rails-tutorial11-2\/","title":{"rendered":"Rails-tutorial\u306e\u307e\u3068\u308111.2(\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u306e\u30e1\u30fc\u30eb\u9001\u4fe1 \u4e3b\u306b\u6f14\u7fd2)"},"content":{"rendered":"<p><a href=\"https:\/\/suzutukiblog.com\/wp-admin\/post.php?post=2938&amp;action=edit\">\u305d\u306e11\u304b\u3089\u7d9a\u304f<\/a><\/p>\n<h3>11.2 \u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u306e\u30e1\u30fc\u30eb\u9001\u4fe1<br \/>\n11.2.1 \u9001\u4fe1\u30e1\u30fc\u30eb\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8<\/h3>\n<p>\u30e1\u30a4\u30e9\u30fc\u306f\u3001\u30e2\u30c7\u30eb\u3084\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u540c\u69d8\u306brails generate\u3067\u751f\u6210\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre><strong>rails generate mailer UserMailer account_activation password_reset<\/strong><\/pre>\n<p>\u4eca\u56de\u5fc5\u8981\u3068\u306a\u308baccount_activation\u30e1\u30bd\u30c3\u30c9\u3068\u3001<br \/>\n\u7b2c12\u7ae0\u3067\u5fc5\u8981\u3068\u306a\u308bpassword_reset\u30e1\u30bd\u30c3\u30c9\u304c\u751f\u6210\u3055\u308c\u307e\u3057\u305f\u3002<\/p>\n<p>\u751f\u6210\u3057\u305f\u30e1\u30a4\u30e9\u30fc\u3054\u3068\u306b\u3001\u30d3\u30e5\u30fc\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c2\u3064\u305a\u3064\u751f\u6210\u3055\u308c\u307e\u3059\u3002<br \/>\n1\u3064\u306f\u30c6\u30ad\u30b9\u30c8\u30e1\u30fc\u30eb\u7528\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3001<br \/>\n1\u3064\u306fHTML\u30e1\u30fc\u30eb\u7528\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u3059\u3002<\/p>\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u30e1\u30a4\u30e9\u30fc\u306e\u30c6\u30ad\u30b9\u30c8\u30d3\u30e5\u30fc (\u81ea\u52d5\u751f\u6210)<br \/>\n<strong>app\/views\/user_mailer\/account_activation.text.erb<\/strong><\/p>\n<pre><strong>UserMailer#account_activation<\/strong>\r\n<strong>&lt;%= @greeting %&gt;, find me in app\/views\/user_mailer\/account_activation.text.erb<\/strong><\/pre>\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u30e1\u30a4\u30e9\u30fc\u306eHTML\u30d3\u30e5\u30fc (\u81ea\u52d5\u751f\u6210)<br \/>\n<strong>app\/views\/user_mailer\/account_activation.html.erb<\/strong><\/p>\n<pre><strong>&lt;h1&gt;UserMailer#account_activation&lt;\/h1&gt;<\/strong>\r\n<strong>  &lt;p&gt;<\/strong>\r\n<strong>    &lt;%= @greeting %&gt;, find me in app\/views\/user_mailer\/account_activation.html.erb<\/strong>\r\n<strong>  &lt;\/p&gt;<\/strong><\/pre>\n<p>\u751f\u6210\u3055\u308c\u308bHTML\u30e1\u30a4\u30e9\u30fc\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u3084\u30c6\u30ad\u30b9\u30c8\u30e1\u30a4\u30e9\u30fc\u306e\u30ec\u30a4\u30a2\u30a6\u30c8\u306fapp\/views\/layouts\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002<br \/>\n\u751f\u6210\u3055\u308c\u305f\u30b3\u30fc\u30c9\u306b\u306f\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570@greeting\u3082\u542b\u307e\u308c\u3066\u3044\u307e\u3059\u3002<br \/>\n<!--more--><\/p>\n<p>\u3053\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u306f\u3001\u3061\u3087\u3046\u3069\u666e\u901a\u306e\u30d3\u30e5\u30fc\u3067\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u5229\u7528\u3067\u304d\u308b\u306e\u3068\u540c\u3058\u3088\u3046\u306b\u3001\u30e1\u30a4\u30e9\u30fc\u30d3\u30e5\u30fc\u3067\u5229\u7528\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u751f\u6210\u3055\u308c\u305fApplication\u30e1\u30a4\u30e9\u30fc<strong>app\/mailers\/application_mailer.rb<\/strong><\/p>\n<pre><strong>class ApplicationMailer &lt; ActionMailer::Base<\/strong>\r\n<strong>default from: \"from@example.com\"<\/strong>\r\n<strong>layout 'mailer'<\/strong>\r\n<strong>end<\/strong><\/pre>\n<p>\u751f\u6210\u3055\u308c\u305fUser\u30e1\u30a4\u30e9\u30fc<br \/>\n<strong>app\/mailers\/user_mailer.rb<\/strong><\/p>\n<pre><strong>class UserMailer &lt; ApplicationMailer<\/strong>\r\n\r\n<strong>def account_activation<\/strong>\r\n<strong>  @greeting = \"Hi\"<\/strong>\r\n<strong>  mail to: \"to@example.org\"<\/strong>\r\n<strong>end<\/strong>\r\n\r\n<strong>def password_reset<\/strong>\r\n<strong>  @greeting = \"Hi\"<\/strong>\r\n<strong>  mail to: \"to@example.org\"<\/strong>\r\n<strong> end<\/strong>\r\n<strong>end<\/strong><\/pre>\n<p>\u751f\u6210\u3055\u308c\u305f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u3066\u3001\u5b9f\u969b\u306b\u6709\u52b9\u5316\u30e1\u30fc\u30eb\u3067\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u307e\u3059\u3002<br \/>\n\u6b21\u306b\u3001\u30e6\u30fc\u30b6\u30fc\u3092\u542b\u3080\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u5909\u6570\u3092\u4f5c\u6210\u3057\u3066\u30d3\u30e5\u30fc\u3067<br \/>\n\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3001user.email\u306b\u30e1\u30fc\u30eb\u9001\u4fe1\u3057\u307e\u3059\u3002<br \/>\nmail\u306bsubject\u30ad\u30fc\u3092\u5f15\u6570\u3068\u3057\u3066\u6e21\u3057\u3066\u3044\u307e\u3059\u3002<br \/>\n\u3053\u306e\u5024\u306f\u3001\u30e1\u30fc\u30eb\u306e\u4ef6\u540d\u306b\u3042\u305f\u308a\u307e\u3059\u3002<\/p>\n<div class=\"heading\"><span class=\"description\"><code>from<\/code>\u30a2\u30c9\u30ec\u30b9\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u5024\u3092\u66f4\u65b0\u3057\u305f\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u30e1\u30a4\u30e9\u30fc<strong><code class=\"filepath\">app\/mailers\/application_mailer.rb<\/code><\/strong><\/span><\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong><span class=\"k\">class<\/span> <span class=\"nc\">ApplicationMailer<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ActionMailer<\/span><span class=\"o\">::<\/span><span class=\"no\">Base<\/span>\r\n<span class=\"hll\">  <span class=\"n\">default<\/span> <span class=\"ss\">from<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"noreply@example.com\"<\/span>\r\n<\/span>  <span class=\"n\">layout<\/span> <span class=\"s1\">'mailer'<\/span>\r\n<span class=\"k\">end<\/span><\/strong><\/pre>\n<\/div>\n<\/div>\n<div class=\"heading\"><span class=\"description\">\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u30ea\u30f3\u30af\u3092\u30e1\u30fc\u30eb\u9001\u4fe1\u3059\u308b<strong><code class=\"filepath\">app\/mailers\/user_mailer.rb<\/code><\/strong><\/span><\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong><span class=\"k\">class<\/span> <span class=\"nc\">UserMailer<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ApplicationMailer<\/span>\r\n\r\n<span class=\"hll\">  <span class=\"k\">def<\/span> <span class=\"nf\">account_activation<\/span><span class=\"p\">(<\/span><span class=\"n\">user<\/span><span class=\"p\">)<\/span>\r\n<\/span><span class=\"hll\">    <span class=\"vi\">@user<\/span> <span class=\"o\">=<\/span> <span class=\"n\">user<\/span>\r\n<\/span><span class=\"hll\">    <span class=\"n\">mail<\/span> <span class=\"ss\">to<\/span><span class=\"p\">:<\/span> <span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">email<\/span><span class=\"p\">,<\/span> <span class=\"ss\">subject<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Account activation\"<\/span>\r\n<\/span><span class=\"hll\">  <span class=\"k\">end<\/span>\r\n<\/span>\r\n  <span class=\"k\">def<\/span> <span class=\"nf\">password_reset<\/span>\r\n    <span class=\"vi\">@greeting<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"Hi\"<\/span>\r\n    <span class=\"n\">mail<\/span> <span class=\"ss\">to<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"to@example.org\"<\/span>\r\n  <span class=\"k\">end<\/span>\r\n<span class=\"k\">end<\/span><\/strong><\/pre>\n<\/div>\n<\/div>\n<p>\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d3\u30e5\u30fc\u306f\u3001\u901a\u5e38\u306e\u30d3\u30e5\u30fc\u3068\u540c\u69d8ERB\u3067\u81ea\u7531\u306b\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3067\u304d\u307e\u3059\u3002<br \/>\n\u3053\u3053\u3067\u306f\u6328\u62f6\u6587\u306b\u30e6\u30fc\u30b6\u30fc\u540d\u3092\u542b\u3081\u3001\u30ab\u30b9\u30bf\u30e0\u306e\u6709\u52b9\u5316\u30ea\u30f3\u30af\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<br \/>\n\u3053\u306e\u5f8c\u3001Rails\u30b5\u30fc\u30d0\u30fc\u3067\u30e6\u30fc\u30b6\u30fc\u3092\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3067\u691c\u7d22\u3057\u3066\u6709\u52b9\u5316\u30c8\u30fc\u30af\u30f3\u3092\u8a8d\u8a3c\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u305f\u3044\u306e\u3067\u3001<br \/>\n\u30ea\u30f3\u30af\u306b\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3068\u30c8\u30fc\u30af\u30f3\u3092\u4e21\u65b9\u542b\u3081\u3066\u304a\u304f\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<br \/>\nAccountActivations\u30ea\u30bd\u30fc\u30b9\u3067\u6709\u52b9\u5316\u3092\u30e2\u30c7\u30eb\u5316\u3057\u305f\u306e\u3067\u3001<br \/>\n\u30c8\u30fc\u30af\u30f3\u81ea\u4f53\u306f\u30ea\u30b9\u30c8 11.1\u3067\u5b9a\u7fa9\u3057\u305f\u540d\u524d\u4ed8\u304d\u30eb\u30fc\u30c8\u306e\u5f15\u6570\u3067\u4f7f\u308f\u308c\u307e\u3059\u3002<\/p>\n<p>edit_account_activation_url(@user.activation_token, &#8230;)<\/p>\n<p>\u3053\u3053\u3067\u601d\u3044\u51fa\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p>edit_user_url(user)<\/p>\n<p>\u4e0a\u306e\u30e1\u30bd\u30c3\u30c9\u306f\u3001\u6b21\u306e\u5f62\u5f0f\u306eURL\u3092\u751f\u6210\u3057\u307e\u3059\u3002<\/p>\n<p>http:\/\/www.example.com\/users\/1\/edit<\/p>\n<p>\u3053\u308c\u306b\u5bfe\u5fdc\u3059\u308b\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u30ea\u30f3\u30af\u306e\u30d9\u30fc\u30b9URL\u306f\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<p><strong>http:\/\/www.example.com\/account_activations\/q5lt38hQDc_959PVoo6b7A\/edit<\/strong><\/p>\n<p>URL\u3067\u4f7f\u3048\u308b\u3088\u3046\u306bBase64\u3067\u30a8\u30f3\u30b3\u30fc\u30c9\u3055\u308c\u3066\u3044\u307e\u3059\u3002<br \/>\n\/users\/1\/edit\u306e\u300c1\u300d\u306e\u3088\u3046\u306a\u30e6\u30fc\u30b6\u30fcID\u3068\u540c\u3058\u5f79\u5272\u3092\u679c\u305f\u3057\u307e\u3059\u3002<br \/>\n\u3053\u306e\u30c8\u30fc\u30af\u30f3\u306f\u3001\u7279\u306bAccountActivations\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306eedit\u30a2\u30af\u30b7\u30e7\u30f3\u3067\u306fparams\u30cf\u30c3\u30b7\u30e5\u3067params[:id]\u3068\u3057\u3066\u53c2\u7167\u3067\u304d\u307e\u3059\u3002<\/p>\n<p>\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u4f7f\u3063\u3066\u3001\u3053\u306eURL\u306b\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3082\u3046\u307e\u304f\u7d44\u307f\u8fbc\u3093\u3067\u307f\u307e\u3057\u3087\u3046\u3002<br \/>\n\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3068\u306f\u3001URL\u306e\u672b\u5c3e\u3067\u7591\u554f\u7b26\u300c?\u300d\u306b\u7d9a\u3051\u3066\u30ad\u30fc\u3068\u5024\u306e\u30da\u30a2\u3092\u8a18\u8ff0\u3057\u305f\u3082\u306e\u3067\u3059<\/p>\n<p><strong>acount_activations\/q5lt38hQDc_959PVoo6b7A\/edit?email=foo%40example.com<\/strong><\/p>\n<p>\u3053\u306e\u3068\u304d\u3001\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u300c@\u300d\u8a18\u53f7\u304cURL\u3067\u306f\u300c%40\u300d\u3068\u306a\u3063\u3066\u3044\u308b\u70b9\u306b\u6ce8\u76ee\u3057\u3066\u304f\u3060\u3055\u3044\u3002<br \/>\n\u3053\u308c\u306f\u300c\u30a8\u30b9\u30b1\u30fc\u30d7\u300d\u3068\u547c\u3070\u308c\u308b\u624b\u6cd5\u3067\u3001\u901a\u5e38URL\u3067\u306f\u6271\u3048\u306a\u3044\u6587\u5b57<br \/>\n\u3092\u6271\u3048\u308b\u3088\u3046\u306b\u3059\u308b\u305f\u3081\u306b\u5909\u63db\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<p>Rails\u3067\u30af\u30a8\u30ea\u30d1\u30e9\u30e1\u30fc\u30bf\u3092\u8a2d\u5b9a\u3059\u308b\u306b\u306f\u3001<br \/>\n\u540d\u524d\u4ed8\u304d\u30eb\u30fc\u30c8\u306b\u5bfe\u3057\u3066\u6b21\u306e\u3088\u3046\u306a\u30cf\u30c3\u30b7\u30e5\u3092\u8ffd\u52a0\u3057\u307e\u3059\u3002<\/p>\n<p><strong>edit_account_activation_url(@user.activation_token,<\/strong><br \/>\n<strong>email: @user.email)<\/strong><\/p>\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u306e\u30c6\u30ad\u30b9\u30c8\u30d3\u30e5\u30fc<br \/>\n<strong>app\/views\/user_mailer\/account_activation.text.erb<\/strong><\/p>\n<pre><strong>Hi &lt;%= @user.name %&gt;,<\/strong>\r\n\r\n<strong>Welcome to the Sample App! Click on the link below to activate your account:<\/strong>\r\n\r\n<strong>&lt;%= edit_account_activation_url(@user.activation_token, email: @user.email) %&gt;<\/strong><\/pre>\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u306eHTML\u30d3\u30e5\u30fc<br \/>\n<strong>app\/views\/user_mailer\/account_activation.html.erb<\/strong><\/p>\n<pre><strong>&lt;h1&gt;Sample App&lt;\/h1&gt;<\/strong>\r\n<strong>&lt;p&gt;Hi &lt;%= @user.name %&gt;,&lt;\/p&gt;<\/strong>\r\n<strong>  &lt;p&gt;<\/strong>\r\n<strong>    Welcome to the Sample App! Click on the link below to activate your account:<\/strong>\r\n<strong>  &lt;\/p&gt;<\/strong>\r\n<strong>  &lt;%= link_to \"Activate\", edit_account_activation_url(@user.activation_token,<\/strong><strong>mail:@user.email) %&gt;<\/strong><\/pre>\n<h3>\u6f14\u7fd2<\/h3>\n<p>1:\u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u958b\u304d\u3001CGI\u30e2\u30b8\u30e5\u30fc\u30eb\u306eescape\u30e1\u30bd\u30c3\u30c9\u3067\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u6587\u5b57\u5217\u3092\u30a8\u30b9\u30b1\u30fc\u30d7\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<br \/>\n\u3053\u306e\u30e1\u30bd\u30c3\u30c9\u3067&#8221;Don&#8217;t panic!&#8221;\u3092\u30a8\u30b9\u30b1\u30fc\u30d7\u3059\u308b\u3068\u3001\u3069\u3093\u306a\u7d50\u679c\u306b\u306a\u308a\u307e\u3059\u304b?<\/p>\n<p>CGI.escape\u3092\u4f7f\u3063\u3066\u30a8\u30b9\u30b1\u30fc\u30d7\u3059\u308b<\/p>\n<p><strong>&gt; CGI.escape(&#8220;Don&#8217;t panic!&#8221;)<\/strong><br \/>\n<strong>=&gt; &#8220;Don%27t+panic%21&#8221;<\/strong><\/p>\n<h3><span class=\"number\">11.2.2\u00a0<\/span>\u9001\u4fe1\u30e1\u30fc\u30eb\u306e\u30d7\u30ec\u30d3\u30e5\u30fc<\/h3>\n<p>\u5b9a\u7fa9\u3057\u305f\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5b9f\u969b\u306e\u8868\u793a\u3092\u7c21\u5358\u306b\u78ba\u8a8d\u3059\u308b\u305f\u3081\u306b\u3001<br \/>\n<strong>\u30e1\u30fc\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc<\/strong>\u3068\u3044\u3046\u88cf\u6280\u3092\u4f7f\u3063\u3066\u307f\u307e\u3057\u3087\u3046\u3002<br \/>\nRails\u3067\u306f\u3001\u7279\u6b8a\u306aURL\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u30e1\u30fc\u30eb\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u305d\u306e\u5834\u3067\u30d7\u30ec\u30d3\u30e5\u30fc\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\n\u30e1\u30fc\u30eb\u3092\u5b9f\u969b\u306b\u9001\u4fe1\u3057\u306a\u304f\u3066\u3082\u3088\u3044\u306e\u3067\u5927\u5909\u4fbf\u5229\u3067\u3059\u3002<br \/>\n\u3053\u308c\u3092\u5229\u7528\u3059\u308b\u306b\u306f\u3001<br \/>\n\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u306edevelopment\u74b0\u5883\u306e\u8a2d\u5b9a\u306b\u624b\u3092\u52a0\u3048\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<div class=\"heading\"><span class=\"description\">development\u74b0\u5883\u306e\u30e1\u30fc\u30eb\u8a2d\u5b9a<strong><code class=\"filepath\">config\/environments\/development.rb<\/code><\/strong><\/span><\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong><span class=\"no\">Rails<\/span><span class=\"o\">.<\/span><span class=\"n\">application<\/span><span class=\"o\">.<\/span><span class=\"n\">configure<\/span> <span class=\"k\">do<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"o\">.<\/span><span class=\"n\">action_mailer<\/span><span class=\"o\">.<\/span><span class=\"n\">raise_delivery_errors<\/span> <span class=\"o\">=<\/span> <span class=\"kp\">true<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"o\">.<\/span><span class=\"n\">action_mailer<\/span><span class=\"o\">.<\/span><span class=\"n\">delivery_method<\/span> <span class=\"o\">=<\/span> <span class=\"ss\">:test<\/span>\r\n  <span class=\"n\">host<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'example.com'<\/span> <span class=\"c1\"># \u3053\u3053\u3092\u30b3\u30d4\u30da\u3059\u308b\u3068\u5931\u6557\u3057\u307e\u3059\u3002\u81ea\u5206\u306e\u74b0\u5883\u306b\u5408\u308f\u305b\u3066\u304f\u3060\u3055\u3044\u3002<\/span>\r\n  <span class=\"n\">config<\/span><span class=\"o\">.<\/span><span class=\"n\">action_mailer<\/span><span class=\"o\">.<\/span><span class=\"n\">default_url_options<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"ss\">host<\/span><span class=\"p\">:<\/span> <span class=\"n\">host<\/span><span class=\"p\">,<\/span> <span class=\"ss\">protocol<\/span><span class=\"p\">:<\/span> <span class=\"s1\">'https'<\/span> <span class=\"p\">}<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n<span class=\"k\">end<\/span><\/strong><\/pre>\n<\/div>\n<\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong><span class=\"n\">host<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'rails-tutorial-mhartl.c9users.io'<\/span>     <span class=\"c1\"># \u30af\u30e9\u30a6\u30c9IDE<\/span>\r\n<span class=\"n\">config<\/span><span class=\"o\">.<\/span><span class=\"n\">action_mailer<\/span><span class=\"o\">.<\/span><span class=\"n\">default_url_options<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"ss\">host<\/span><span class=\"p\">:<\/span> <span class=\"n\">host<\/span><span class=\"p\">,<\/span> <span class=\"ss\">protocol<\/span><span class=\"p\">:<\/span> <span class=\"s1\">'https'<\/span> <span class=\"p\">}<\/span>\r\n<\/strong><\/pre>\n<\/div>\n<\/div>\n<p class=\"noindent\">\u4e00\u65b9\u3001\u3082\u3057\u30ed\u30fc\u30ab\u30eb\u74b0\u5883\u3067\u958b\u767a\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u6b21\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002<\/p>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong><span class=\"n\">host<\/span> <span class=\"o\">=<\/span> <span class=\"s1\">'localhost:3000'<\/span>                     <span class=\"c1\"># \u30ed\u30fc\u30ab\u30eb\u74b0\u5883<\/span>\r\n<span class=\"n\">config<\/span><span class=\"o\">.<\/span><span class=\"n\">action_mailer<\/span><span class=\"o\">.<\/span><span class=\"n\">default_url_options<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"ss\">host<\/span><span class=\"p\">:<\/span> <span class=\"n\">host<\/span><span class=\"p\">,<\/span> <span class=\"ss\">protocol<\/span><span class=\"p\">:<\/span> <span class=\"s1\">'http'<\/span> <span class=\"p\">}<\/span><\/strong><\/pre>\n<\/div>\n<\/div>\n<p>development\u30b5\u30fc\u30d0\u30fc\u3092\u518d\u8d77\u52d5\u3057\u3066\u8a2d\u5b9a\u3092\u8aad\u307f\u8fbc\u3093\u3060\u3089\u3001<br \/>\n\u6b21\u306f\u81ea\u52d5\u751f\u6210\u3057\u305fUser\u30e1\u30a4\u30e9\u30fc\u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u30d5\u30a1\u30a4\u30eb\u306e\u66f4\u65b0\u304c\u5fc5\u8981\u3067\u3059<\/p>\n<div class=\"heading\"><span class=\"description\">User\u30e1\u30a4\u30e9\u30fc\u30d7\u30ec\u30d3\u30e5\u30fc (\u81ea\u52d5\u751f\u6210)<\/span><\/div>\n<div class=\"heading\"><strong><span class=\"description\"><code class=\"filepath\">test\/mailers\/previews\/user_mailer_preview.rb<\/code><\/span><\/strong><\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong><span class=\"c1\"># Preview all emails at http:\/\/localhost:3000\/rails\/mailers\/user_mailer<\/span>\r\n<span class=\"k\">class<\/span> <span class=\"nc\">UserMailerPreview<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ActionMailer<\/span><span class=\"o\">::<\/span><span class=\"no\">Preview<\/span>\r\n\r\n  <span class=\"c1\"># Preview this email at<\/span>\r\n  <span class=\"c1\"># http:\/\/localhost:3000\/rails\/mailers\/user_mailer\/account_activation<\/span>\r\n  <span class=\"k\">def<\/span> <span class=\"nf\">account_activation<\/span>\r\n    <span class=\"no\">UserMailer<\/span><span class=\"o\">.<\/span><span class=\"n\">account_activation<\/span>\r\n  <span class=\"k\">end<\/span>\r\n\r\n  <span class=\"c1\"># Preview this email at<\/span>\r\n  <span class=\"c1\"># http:\/\/localhost:3000\/rails\/mailers\/user_mailer\/password_reset<\/span>\r\n  <span class=\"k\">def<\/span> <span class=\"nf\">password_reset<\/span>\r\n    <span class=\"no\">UserMailer<\/span><span class=\"o\">.<\/span><span class=\"n\">password_reset<\/span>\r\n  <span class=\"k\">end<\/span>\r\n<span class=\"k\">end<\/span><\/strong><\/pre>\n<\/div>\n<\/div>\n<p>user\u5909\u6570\u304c\u958b\u767a\u7528\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u6700\u521d\u306e\u30e6\u30fc\u30b6\u30fc\u306b\u306a\u308b\u3088\u3046\u306b\u5b9a\u7fa9\u3057\u3066\u3001\u305d\u308c\u3092UserMailer.account_activation\u306e\u5f15\u6570\u3068\u3057\u3066\u6e21\u3057\u307e\u3059\u3002<br \/>\n\u3053\u306e\u3068\u304d\u3001\u3067\u306fuser.activation_token\u306e\u5024\u306b\u3082\u4ee3\u5165\u3057\u3066\u3044\u308b\u70b9\u306b\u3054\u6ce8\u76ee\u304f\u3060\u3055\u3044\u3002<br \/>\n\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3067\u306f\u3001\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u306e\u30c8\u30fc\u30af\u30f3\u304c\u5fc5\u8981\u306a\u306e\u3067\u3001<br \/>\n\u4ee3\u5165\u306f\u7701\u7565\u3067\u304d\u307e\u305b\u3093\u3002<br \/>\n\u306a\u304a\u3001activation_token\u306f\u4eee\u306e\u5c5e\u6027\u3067\u3057\u304b\u306a\u3044\u306e\u3067<br \/>\n\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30e6\u30fc\u30b6\u30fc\u306f\u3053\u306e\u5024\u3092\u5b9f\u969b\u306b\u306f\u6301\u3063\u3066\u3044\u307e\u305b\u3093\u3002<\/p>\n<p>\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u30e1\u30bd\u30c3\u30c9 (\u5b8c\u6210)<br \/>\n<strong>test\/mailers\/previews\/user_mailer_preview.rb<\/strong><\/p>\n<pre><strong># Preview all emails at http:\/\/3cfb3f48c6f540c799b69407f8f01afa.vfs.cloud9.ap-northeast-1.amazonaws.com0\/rails\/mailers\/user_mailer<\/strong>\r\n<strong>class UserMailerPreview &lt; ActionMailer::Preview<\/strong>\r\n\r\n<strong># Preview this email at<\/strong>\r\n<strong># http:\/\/3cfb3f48c6f540c799b6941afa.vfs.cloud9.ap-northeast-1.amazonaws.com\/rails\/mailers\/user_mailer\/account_activation<\/strong>\r\n<strong>def account_activation<\/strong>\r\n<strong> user = User.first<\/strong>\r\n<strong> user.activation_token = User.new_token<\/strong>\r\n<strong> UserMailer.account_activation(user)<\/strong>\r\n<strong>end<\/strong>\r\n\r\n<strong># Preview this email at<\/strong>\r\n<strong># http:\/\/localhost:3000\/rails\/mailers\/user_mailer\/password_reset<\/strong>\r\n<strong> def password_reset<\/strong>\r\n<strong>  UserMailer.password_reset<\/strong>\r\n<strong> end<\/strong>\r\n<strong>end<\/strong><\/pre>\n<p>\u81ea\u5206\u306e\u5834\u5408\u30af\u30e9\u30a6\u30c99\u306a\u306e\u3067\u2193Preview Running apprication\u306e\u30db\u30b9\u30c8\u540d\u3092\u8db3\u3059<br \/>\nhttp:\/\/3cfb3f.vfs.cloud9.ap-northeast-1.amazonaws.com\/rails\/mailers\/user_mailer\/password_reset<\/p>\n<h2>\u6f14\u7fd2<\/h2>\n<h3>1:Rails\u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u6a5f\u80fd\u3092\u4f7f\u3063\u3066\u3001\u30d6\u30e9\u30a6\u30b6\u304b\u3089\u5148\u307b\u3069\u306e\u30e1\u30fc\u30eb\u3092\u8868\u793a\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u300cDate\u300d\u306e\u6b04\u306b\u306f\u3069\u3093\u306a\u5185\u5bb9\u304c\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u3067\u3057\u3087\u3046\u304b?<\/h3>\n<p>Date\u306f\u30d6\u30e9\u30a6\u30b6\u3067\u30e1\u30fc\u30eb\u3092\u8868\u793a\u3057\u305f\u6642\u70b9\u306e\u65e5\u6642\u304c\u8868\u793a\u3055\u308c\u308b\u3002<\/p>\n<h3><span class=\"number\">11.2.3\u00a0<\/span>\u9001\u4fe1\u30e1\u30fc\u30eb\u306e\u30c6\u30b9\u30c8<\/h3>\n<div class=\"heading\"><span class=\"description\">\u73fe\u5728\u306e\u30e1\u30fc\u30eb\u306e\u5b9f\u88c5\u3092\u30c6\u30b9\u30c8\u3059\u308b\u00a0<span class=\"smallcaps\"><strong>red<\/strong><\/span><\/span><\/div>\n<div class=\"heading\"><strong><span class=\"description\"><code class=\"filepath\">test\/mailers\/user_mailer_test.rb<\/code><\/span><\/strong><\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong><span class=\"nb\">require<\/span> <span class=\"s1\">'test_helper'<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">UserMailerTest<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ActionMailer<\/span><span class=\"o\">::<\/span><span class=\"no\">TestCase<\/span>\r\n\r\n  <span class=\"nb\">test<\/span> <span class=\"s2\">\"account_activation\"<\/span> <span class=\"k\">do<\/span>\r\n    <span class=\"n\">user<\/span> <span class=\"o\">=<\/span> <span class=\"n\">users<\/span><span class=\"p\">(<\/span><span class=\"ss\">:michael<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">activation_token<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"o\">.<\/span><span class=\"n\">new_token<\/span>\r\n    <span class=\"n\">mail<\/span> <span class=\"o\">=<\/span> <span class=\"no\">UserMailer<\/span><span class=\"o\">.<\/span><span class=\"n\">account_activation<\/span><span class=\"p\">(<\/span><span class=\"n\">user<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"n\">assert_equal<\/span> <span class=\"s2\">\"Account activation\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">mail<\/span><span class=\"o\">.<\/span><span class=\"n\">subject<\/span>\r\n    <span class=\"n\">assert_equal<\/span> <span class=\"o\">[<\/span><span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">email<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span> <span class=\"n\">mail<\/span><span class=\"o\">.<\/span><span class=\"n\">to<\/span>\r\n    <span class=\"n\">assert_equal<\/span> <span class=\"o\">[<\/span><span class=\"s2\">\"noreply@example.com\"<\/span><span class=\"o\">]<\/span><span class=\"p\">,<\/span> <span class=\"n\">mail<\/span><span class=\"o\">.<\/span><span class=\"n\">from<\/span>\r\n    <span class=\"n\">assert_match<\/span> <span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">name<\/span><span class=\"p\">,<\/span>               <span class=\"n\">mail<\/span><span class=\"o\">.<\/span><span class=\"n\">body<\/span><span class=\"o\">.<\/span><span class=\"n\">encoded<\/span>\r\n    <span class=\"n\">assert_match<\/span> <span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">activation_token<\/span><span class=\"p\">,<\/span>   <span class=\"n\">mail<\/span><span class=\"o\">.<\/span><span class=\"n\">body<\/span><span class=\"o\">.<\/span><span class=\"n\">encoded<\/span>\r\n    <span class=\"n\">assert_match<\/span> <span class=\"no\">CGI<\/span><span class=\"o\">.<\/span><span class=\"n\">escape<\/span><span class=\"p\">(<\/span><span class=\"n\">user<\/span><span class=\"o\">.<\/span><span class=\"n\">email<\/span><span class=\"p\">),<\/span>  <span class=\"n\">mail<\/span><span class=\"o\">.<\/span><span class=\"n\">body<\/span><span class=\"o\">.<\/span><span class=\"n\">encoded<\/span>\r\n  <span class=\"k\">end<\/span>\r\n<span class=\"k\">end<\/span><\/strong><\/pre>\n<\/div>\n<\/div>\n<div id=\"uid\" class=\"codelisting\" data-tralics-id=\"uid\" data-number=\"11.22\">\n<div class=\"heading\"><span class=\"description\"><span class=\"smallcaps\"><strong>green<\/strong><\/span><\/span><\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong>rails test:mailers\r\n<\/strong><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"sec-exercises_email_tests\" class=\"subsubsection\" data-tralics-id=\"uid\" data-number=\"11.2.3.1\">\n<h3>\u6f14\u7fd2<\/h3>\n<div class=\"society-note\"><\/div>\n<p>\u3053\u306e\u6642\u70b9\u3067\u3001\u30c6\u30b9\u30c8\u30b9\u30a4\u30fc\u30c8\u304c\u00a0<span class=\"smallcaps\"><strong>green<\/strong><\/span>\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<span id=\"ex-b429e6\" class=\"exercise\"><\/span><\/p>\n<div id=\"uid\" class=\"codelisting\" data-tralics-id=\"uid\" data-number=\"11.22\">\n<div class=\"heading\"><span class=\"description\"><span class=\"smallcaps\"><strong>green<\/strong><\/span><\/span><\/div>\n<div class=\"code\">\n<div class=\"highlight\">\n<pre><strong>rails test:mailers<\/strong><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p><a class=\"hyperref\" href=\"https:\/\/railstutorial.jp\/chapters\/account_activation?version=5.1#code-real_account_activation_test\">\u30ea\u30b9\u30c8\u00a0<span class=\"ref\">11.20<\/span><\/a>\u3067\u4f7f\u3063\u305f<code>CGI.escape<\/code>\u306e\u90e8\u5206\u3092\u524a\u9664\u3059\u308b\u3068\u3001\u30c6\u30b9\u30c8\u304c\u00a0<span class=\"smallcaps\"><strong>red<\/strong><\/span>\u306b\u5909\u308f\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<\/p>\n<p><strong><code>CGI.escape\u3092\u524a\u9664\u3057\u3066\u30c6\u30b9\u30c8<\/code><\/strong><\/p>\n<\/div>\n<h3>11.2.4 \u30e6\u30fc\u30b6\u30fc\u306ecreate\u30a2\u30af\u30b7\u30e7\u30f3\u3092\u66f4\u65b0<\/h3>\n<p>\u30e6\u30fc\u30b6\u30fc\u767b\u9332\u306b\u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u3092\u8ffd\u52a0\u3059\u308b red<br \/>\n<strong>app\/controllers\/users_controller.rb<\/strong><\/p>\n<pre><strong><span class=\"k\">class<\/span> <span class=\"nc\">UsersController<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ApplicationController<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"k\">def<\/span> <span class=\"nf\">create<\/span>\r\n    <span class=\"vi\">@user<\/span> <span class=\"o\">=<\/span> <span class=\"no\">User<\/span><span class=\"o\">.<\/span><span class=\"n\">new<\/span><span class=\"p\">(<\/span><span class=\"n\">user_params<\/span><span class=\"p\">)<\/span>\r\n    <span class=\"k\">if<\/span> <span class=\"vi\">@user<\/span><span class=\"o\">.<\/span><span class=\"n\">save<\/span>\r\n<span class=\"hll\">      <span class=\"no\">UserMailer<\/span><span class=\"o\">.<\/span><span class=\"n\">account_activation<\/span><span class=\"p\">(<\/span><span class=\"vi\">@user<\/span><span class=\"p\">)<\/span><span class=\"o\">.<\/span><span class=\"n\">deliver_now<\/span>\r\n<\/span><span class=\"hll\">      <span class=\"n\">flash<\/span><span class=\"o\">[<\/span><span class=\"ss\">:info<\/span><span class=\"o\">]<\/span> <span class=\"o\">=<\/span> <span class=\"s2\">\"Please check your email to activate your account.\"<\/span>\r\n<\/span><span class=\"hll\">      <span class=\"n\">redirect_to<\/span> <span class=\"n\">root_url<\/span>\r\n<\/span>    <span class=\"k\">else<\/span>\r\n      <span class=\"n\">render<\/span> <span class=\"s1\">'new'<\/span>\r\n    <span class=\"k\">end<\/span>\r\n  <span class=\"k\">end<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n  <span class=\"o\">.<\/span>\r\n<span class=\"k\">end<\/span><\/strong><\/pre>\n<p>\u5931\u6557\u3059\u308b\u30c6\u30b9\u30c8\u3092\u4e00\u6642\u7684\u306b\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b green<br \/>\n<strong>test\/integration\/users_signup_test.rb<\/strong><\/p>\n<pre><strong><span class=\"nb\">require<\/span> <span class=\"s1\">'test_helper'<\/span>\r\n\r\n<span class=\"k\">class<\/span> <span class=\"nc\">UsersSignupTest<\/span> <span class=\"o\">&lt;<\/span> <span class=\"no\">ActionDispatch<\/span><span class=\"o\">::<\/span><span class=\"no\">IntegrationTest<\/span>\r\n    #\u4e2d\u7565\r\n    <span class=\"n\">follow_redirect!<\/span>\r\n<span class=\"hll\">    <span class=\"c1\"># assert_template 'users\/show'<\/span>\r\n<\/span><span class=\"hll\">    <span class=\"c1\"># assert is_logged_in?<\/span>\r\n<\/span>  <span class=\"k\">end<\/span>\r\n<span class=\"k\">end<\/span><\/strong><\/pre>\n<h3>\u6f14\u7fd2<\/h3>\n<p>1:\u65b0\u3057\u3044\u30e6\u30fc\u30b6\u30fc\u3092\u767b\u9332\u3057\u305f\u3068\u304d\u3001\u30ea\u30c0\u30a4\u30ec\u30af\u30c8\u5148\u304c\u9069\u5207\u306aURL\u306b\u5909\u308f\u3063\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u305d\u306e\u5f8c\u3001Rails\u30b5\u30fc\u30d0\u30fc\u306e\u30ed\u30b0\u304b\u3089\u9001\u4fe1\u30e1\u30fc\u30eb\u306e\u5185\u5bb9\u3092\u78ba\u8a8d\u3057\u3066\u307f\u3066\u304f\u3060\u3055\u3044\u3002\u6709\u52b9\u5316\u30c8\u30fc\u30af\u30f3\u306e\u5024\u306f\u3069\u3046\u306a\u3063\u3066\u3044\u307e\u3059\u304b?<\/p>\n<p><strong>https:\/\/ap-northeast-1.amazonaws.com\/account_activations<\/strong><br \/>\n<strong>\/my8omJYTQnPJ41g\/edit?email=boku%40example.com<\/strong><\/p>\n<p>2:\u30b3\u30f3\u30bd\u30fc\u30eb\u3092\u958b\u304d\u3001\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4e0a\u306b\u30e6\u30fc\u30b6\u30fc\u304c\u4f5c\u6210\u3055\u308c\u305f\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002\u307e\u305f\u3001\u3053\u306e\u30e6\u30fc\u30b6\u30fc\u306f\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u4e0a\u306b\u306f\u3044\u307e\u3059\u304c\u3001<br \/>\n\u6709\u52b9\u5316\u306e\u30b9\u30c6\u30fc\u30bf\u30b9\u304cfalse\u306e\u307e\u307e\u306b\u306a\u3063\u3066\u3044\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>rails c\u3067\u78ba\u8a8d\u3059\u308b<\/p>\n<p><a href=\"https:\/\/suzutukiblog.com\/index.php\/2021\/04\/25\/rails-tutorial11-3\/\">\u305d\u306e11.3\u304b\u3089\u7d9a\u304f<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u305d\u306e11\u304b\u3089\u7d9a\u304f 11.2 \u30a2\u30ab\u30a6\u30f3\u30c8\u6709\u52b9\u5316\u306e\u30e1\u30fc\u30eb\u9001\u4fe1 11.2.1 \u9001\u4fe1\u30e1\u30fc\u30eb\u306e\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8 \u30e1\u30a4\u30e9\u30fc\u306f\u3001\u30e2\u30c7\u30eb\u3084\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u3068\u540c\u69d8\u306brails generate\u3067\u751f\u6210\u3067\u304d\u307e\u3059\u3002 rails generate mai [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[27,13],"tags":[],"class_list":["post-3047","post","type-post","status-publish","format-standard","hentry","category-programming-note","category-rails"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts\/3047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/comments?post=3047"}],"version-history":[{"count":9,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts\/3047\/revisions"}],"predecessor-version":[{"id":4575,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/posts\/3047\/revisions\/4575"}],"wp:attachment":[{"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/media?parent=3047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/categories?post=3047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/suzutukiblog.com\/index.php\/wp-json\/wp\/v2\/tags?post=3047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}