<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>bmiwdmb (ming)</title>
    <link>https://ruby-china.org/bmiwdmb</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>redirect_to 後為何可以看到 flash</title>
      <description>&lt;p&gt;看了一些文章，粗遣了解 render / redirect_to (其實還沒很明白，如果可以解釋的話，謝謝)&lt;/p&gt;

&lt;p&gt;比較不能理解的是，如果 redirect_to 是一次新的請求的話，為何可以看到 flash 消息？&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;create&lt;/span&gt;
  &lt;span class="n"&gt;flash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:danger&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Invalid email/password combination'&lt;/span&gt;
  &lt;span class="n"&gt;redirect_to&lt;/span&gt; &lt;span class="n"&gt;login_path&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;麻煩各位解惑了，謝謝&amp;lt;(_ _)&amp;gt;&lt;/p&gt;</description>
      <author>bmiwdmb</author>
      <pubDate>Sun, 26 Jul 2015 12:40:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/26652</link>
      <guid>https://ruby-china.org/topics/26652</guid>
    </item>
    <item>
      <title>Ruby on Rails 教程 第 8 章</title>
      <description>&lt;p&gt;&lt;a href="http://railstutorial-china.org/book/chapter8.html#listing-failed-login-attempt" rel="nofollow" target="_blank"&gt;http://railstutorial-china.org/book/chapter8.html#listing-failed-login-attempt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ruby on Rails 教程 第 8 章中實現一個 cookie 記住密碼。其中有一段提到&lt;/p&gt;

&lt;p&gt;其中，cookies.signed[:user_id] 会自动解密 cookie 中的用户 ID。然后，再使用 bcrypt 确认 cookies[:remember_token] 和 代码清单 8.32 生成的 remember_digest 是否匹配。（你可能想知道为什么不能只使用签名的用户 ID。如果没有记忆令牌，攻击者一旦知道加密的 ID，就能以这个用户的身份登录。&lt;strong&gt;但是按照我们目前的设计方式，就算攻击者同时获得了用户 ID 和记忆令牌，也要等到用户退出后才能登录&lt;/strong&gt;。）&lt;/p&gt;

&lt;p&gt;不太理解&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;但是按照我们目前的设计方式，就算攻击者同时获得了用户 ID 和记忆令牌，也要等到用户退出后才能登录&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;這句話的意思&lt;/p&gt;

&lt;p&gt;可以請前輩們解惑嘛 感謝！(如果可以的話希望可以解釋一下來龍去脈，感謝！)&lt;/p&gt;</description>
      <author>bmiwdmb</author>
      <pubDate>Fri, 13 Feb 2015 19:09:57 +0800</pubDate>
      <link>https://ruby-china.org/topics/24255</link>
      <guid>https://ruby-china.org/topics/24255</guid>
    </item>
    <item>
      <title>Ruby on Rails 教程 第 8 章</title>
      <description>&lt;p&gt;&lt;a href="http://railstutorial-china.org/book/chapter8.html" rel="nofollow" target="_blank" title=""&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;第八章中 &lt;/p&gt;

&lt;p&gt;def log_in(user)
    session[:user_id] = user.id
end&lt;/p&gt;

&lt;p&gt;利用這個輔助方法 session&lt;/p&gt;

&lt;p&gt;接著會在首頁中調用&lt;/p&gt;

&lt;p&gt;def current_user
    &lt;a href="/current_user" class="user-mention" title="@current_user"&gt;&lt;i&gt;@&lt;/i&gt;current_user&lt;/a&gt; ||= User.find_by(id: session[:user_id])
end&lt;/p&gt;

&lt;p&gt;教學中是這樣寫：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;这样定义应该可以，不过如果页面中多次调用 current_user，就会多次查询数据库。所以，我们要使用一种 Ruby 习惯写法，把 User.find_by 的结果存储在实例变量中，只在第一次调用时查询数据库，后续再调用直接返回实例变量中存储的值：[5]&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;不過我發現每次瀏覽首頁的時候 (首頁有調用 current_user) 還是會去查詢數據庫。(rails server log)。&lt;/p&gt;

&lt;p&gt;确定是首页调用 current_user 造成查询的，我将首页的 current_user 注解掉，导轨服务器日志就没有查询资料库的记录了&lt;/p&gt;

&lt;p&gt;我的理解是&lt;a href="/current_user" class="user-mention" title="@current_user"&gt;&lt;i&gt;@&lt;/i&gt;current_user&lt;/a&gt;应该会存东西，不过我把他手看跌 &lt;a href="/current_user.to_s" class="user-mention" title="@current_user.to_s"&gt;&lt;i&gt;@&lt;/i&gt;current_user.to_s&lt;/a&gt; 发现他没存。所以每次到首页的时候还是会浏览查一次数据库。&lt;/p&gt;

&lt;p&gt;请各位前辈解惑感谢。&lt;/p&gt;</description>
      <author>bmiwdmb</author>
      <pubDate>Thu, 12 Feb 2015 22:08:41 +0800</pubDate>
      <link>https://ruby-china.org/topics/24239</link>
      <guid>https://ruby-china.org/topics/24239</guid>
    </item>
  </channel>
</rss>
