<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>jeffhappily (Jeff)</title>
    <link>https://ruby-china.org/jeffhappily</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>关于 gem 的构造</title>
      <description>&lt;p&gt;我开始用 ruby 已经有一年了，主要都是用在 ruby on rails 的项目。我想再一步提升我对 ruby 的认识，很多人的说参与开源项目或者自己写 gem 是最好的学习方法。&lt;/p&gt;

&lt;p&gt;我也有尝试去阅读一些 gem 的代码，但我发现 gem 的代码构造和 rails 不太一样，主要的逻辑都是在&lt;code&gt;lib&lt;/code&gt;里，然后有 &lt;code&gt;version&lt;/code&gt;,&lt;code&gt;engine&lt;/code&gt;,&lt;code&gt;core&lt;/code&gt;之类的，我都不太明白，我想请问在哪里能够学到类似的知识？&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Thu, 02 Nov 2017 23:04:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/34499</link>
      <guid>https://ruby-china.org/topics/34499</guid>
    </item>
    <item>
      <title>怎么做 tag</title>
      <description>&lt;p&gt;我有一个 &lt;code&gt;Doctor&lt;/code&gt;的 model，每一个 doctor 会有很多对应的 tag，通常都会是跟其专业相关的病或症状，方便用户搜索。&lt;/p&gt;

&lt;p&gt;我有看中一个 gem 叫&lt;code&gt;acts-as-taggable-on&lt;/code&gt;，看样子应该适合，但不知道是不是最好的选择，因为这些 tag 其实主要是让用户搜索用的&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Thu, 02 Nov 2017 22:59:21 +0800</pubDate>
      <link>https://ruby-china.org/topics/34498</link>
      <guid>https://ruby-china.org/topics/34498</guid>
    </item>
    <item>
      <title>怎么把几个 model 合在一起</title>
      <description>&lt;p&gt;我有一个&lt;code&gt;User&lt;/code&gt;model，&lt;code&gt;User&lt;/code&gt;有几个 associated 的 model，然后通过 User，我把几个 model 合在一起，如下&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;tables&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:d&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="vi"&gt;@user.send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;flatten&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但我要的不仅仅是 model，而是特定的资料，例如说&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;A&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;data&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;age: &lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;B&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;data&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="nb"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="ss"&gt;height: &lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后查询会是这样&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;tables&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:b&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:d&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
  &lt;span class="vi"&gt;@user.send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;flatten&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;A&lt;/code&gt;和&lt;code&gt;B&lt;/code&gt;都有 data，但内容不完全一样，
这样的话，如果我做的是一个庞大的查询的话，要每个 model 轮流去算这个 data（data 可能需要计算，不是单纯的属性），整个查询就会非常慢。&lt;/p&gt;

&lt;p&gt;想请问有什么办法优化吗？例如把 data 存进资料库？&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Fri, 13 Oct 2017 23:44:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/34372</link>
      <guid>https://ruby-china.org/topics/34372</guid>
    </item>
    <item>
      <title>怎么做 Token Authentication?</title>
      <description>&lt;p&gt;我最近开始学习 React Native，想要自己搭建一个小项目，后端是用 Rails API。因为是第一次做 API，所以也对 Token Authentication 不太熟悉。&lt;/p&gt;

&lt;p&gt;我在网上也看了几个不同的教程，每个人做法都不太一样，有些人甚至把 Token 储存在数据库里，可是据我所知，后端是不该保存 Token 的。&lt;/p&gt;

&lt;p&gt;所以我想请问各位，到底怎么样才是正确地方法？&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Tue, 03 Oct 2017 07:58:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/34317</link>
      <guid>https://ruby-china.org/topics/34317</guid>
    </item>
    <item>
      <title>关于 Homeland 里的 meta tag</title>
      <description>&lt;p&gt;我在看 homeland 代码的时候发现了这行&lt;/p&gt;
&lt;pre class="highlight erb"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"current-user"&lt;/span&gt; &lt;span class="na"&gt;data-user-id=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="na"&gt;data-user-login=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;login&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="na"&gt;data-user-name=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="na"&gt;data-user-email=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;email&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt; &lt;span class="na"&gt;data-user-avatar-url=&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="cp"&gt;&amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;avatar?&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;avatar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:md&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;letter_avatar_url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;96&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="cp"&gt;&amp;lt;%&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt; &lt;span class="cp"&gt;%&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;我想问把 current_user 的资料放进 meta tag 是为了什么？meta 不是 seo 的东西吗？&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Sun, 01 Oct 2017 17:47:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/34312</link>
      <guid>https://ruby-china.org/topics/34312</guid>
    </item>
    <item>
      <title>我想请问如果我想搭建电子商务，用 Ruby on Rails 会好吗？</title>
      <description>&lt;p&gt;我想请问如果我想搭建电子商务，用 Ruby on Rails 会好吗？例如说用&lt;code&gt;spree&lt;/code&gt;。还是说有其他推荐的语言框架或平台？&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Mon, 11 Sep 2017 16:09:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/34092</link>
      <guid>https://ruby-china.org/topics/34092</guid>
    </item>
    <item>
      <title>关于 rerender 的问题</title>
      <description>&lt;h3 id="js.erb Render 效率"&gt;js.erb Render 效率&lt;/h3&gt;
&lt;p&gt;我们公司正在开发一款聊天软件，用的是 rails 4，前端没有框架，只是 HTML,CSS 和 JS。这个聊天软件类似 FB 的 messenger，如图：&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2017/7305fae6-1b15-4b3b-806c-f6de1348eafe.jpg!large" title="" alt=""&gt;
&lt;em&gt;左边是聊天记录，中间是聊天窗口，右边是对方的资料，以及一些 action 按键。&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;现在的运作方式就是，&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;当选择左边的联系人时，会有两个 ajax，一个是标记信息为已读，一个是 render 中间聊天窗口和右边的资料和按键。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;我每发一个信息，就会有一个 ajax call 更新记录，以及 render 左边的列表。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;每收到一个信息，也会有 ajax render 左边的列表。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;感觉这样的设计会是用户体验不顺畅，貌似 render 太多了，想问各位大大有没有&lt;strong&gt;优化的方法&lt;/strong&gt;？&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Thu, 24 Aug 2017 13:02:52 +0800</pubDate>
      <link>https://ruby-china.org/topics/33920</link>
      <guid>https://ruby-china.org/topics/33920</guid>
    </item>
    <item>
      <title>麻烦大大指教 Rails 优化问题</title>
      <description>&lt;p&gt;我们公司用的是 Rails 4，但没有太专业的程序员。我最近开始开始想要学习提升性能，写更有效率的代码，却不知从何下手。&lt;img src="https://l.ruby-china.com/photo/2017/3fc167d8-7fec-455d-a46e-5a28b74864a3.png!large" title="" alt=""&gt;
&lt;img src="https://l.ruby-china.com/photo/2017/0418edf0-bb84-4431-95d5-b0a5338db96d.png!large" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这是我们公司网站的 CPU 及内存指标，想问各位大大，这样的数据怎么样？是一般呢，还是不好？如果想要优化，应该从何下手？&lt;/p&gt;</description>
      <author>jeffhappily</author>
      <pubDate>Wed, 23 Aug 2017 12:11:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/33905</link>
      <guid>https://ruby-china.org/topics/33905</guid>
    </item>
  </channel>
</rss>
