<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>rbprocareer</title>
    <link>https://ruby-china.org/rbprocareer</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>使用 Mongoid 时对 Criteria 的每一次引用都会触发一次数据库查询？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;drawings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Drawing&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;published&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:user&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;drawing_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;drawings&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;&amp;amp;&lt;/span&gt;&lt;span class="ss"&gt;:id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;drawing_user_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;drawings&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;drawing&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;drawing&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;logs:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Started GET "/api/hot" for 127.0.0.1 at 2015-07-20 10:55:18 +0800
  MOPED: 127.0.0.1:27017 COMMAND      database=admin command={:ismaster=&amp;gt;1} runtime: 0.7450ms
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=drawings selector={"published"=&amp;gt;true} flags=[] limit=10 skip=0 batch_size=nil fields=nil runtime: 1.4050ms
  MOPED: 127.0.0.1:27017 KILL_CURSORS cursor_ids=[40708006394] runtime: 0.1960ms
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"_id"=&amp;gt;{"$in"=&amp;gt;[3, 7, 10, 9, 4, 16, 11]}} flags=[] limit=0 skip=0 batch_size=nil fields=nil runtime: 1.5960ms
QUERY CACHE  database=ki_backend_development collection=drawings selector={"published"=&amp;gt;true}
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;3}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.5010ms
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;7}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 1.1690ms
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;10}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.5130ms
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;7}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;9}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.8260ms
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;4}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 1.6400ms
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;16}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.3710ms
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;4}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
  MOPED: 127.0.0.1:27017 QUERY        database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;11}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.3980ms
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;16}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=drawings selector={"published"=&amp;gt;true}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;3}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;7}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;10}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;7}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;9}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;4}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;16}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;4}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;11}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
QUERY CACHE  database=ki_backend_development collection=users selector={"$query"=&amp;gt;{"_id"=&amp;gt;16}, "$orderby"=&amp;gt;{:_id=&amp;gt;1}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Mongoid 版本为 4.0.2&lt;/p&gt;</description>
      <author>rbprocareer</author>
      <pubDate>Mon, 20 Jul 2015 11:38:55 +0800</pubDate>
      <link>https://ruby-china.org/topics/26565</link>
      <guid>https://ruby-china.org/topics/26565</guid>
    </item>
    <item>
      <title>carrierwave 本地目录</title>
      <description>&lt;p&gt;carrierwave 上传图片到本地存储的比较合适的目录是什么？默认是和项目在一起，在 public 下，这样以后项目要迁移的话就比较麻烦。放在项目目录结构外的某个文件系统目录，不确定项目能够访问的到。做个链接视乎也不太妙？&lt;/p&gt;</description>
      <author>rbprocareer</author>
      <pubDate>Sun, 05 Oct 2014 00:34:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/21851</link>
      <guid>https://ruby-china.org/topics/21851</guid>
    </item>
    <item>
      <title>Grape 返回 JSON 格式太不灵活</title>
      <description>&lt;p&gt;我期望返回以下格式的数据：&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="ss"&gt;code: &lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;msg: &lt;/span&gt;&lt;span class="s2"&gt;"OK"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;data: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sr"&gt;//&lt;/span&gt; &lt;span class="n"&gt;normal&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="n"&gt;goes&lt;/span&gt; &lt;span class="n"&gt;here&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;exists&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;present 具体 Entity 时挺好用的，但涉及到内嵌结构的时候就不灵了&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="sr"&gt;//&lt;/span&gt; &lt;span class="n"&gt;ok&lt;/span&gt;
&lt;span class="n"&gt;present&lt;/span&gt; &lt;span class="ss"&gt;:items&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Book&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;with: &lt;/span&gt;&lt;span class="no"&gt;Entities&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Book&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="sr"&gt;//&lt;/span&gt; &lt;span class="n"&gt;does&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;work&lt;/span&gt;
&lt;span class="n"&gt;resources&lt;/span&gt; &lt;span class="ss"&gt;:books&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;get&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
        &lt;span class="n"&gt;present&lt;/span&gt; &lt;span class="ss"&gt;:code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;
        &lt;span class="n"&gt;present&lt;/span&gt; &lt;span class="ss"&gt;:msg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"OK"&lt;/span&gt;
        &lt;span class="n"&gt;present&lt;/span&gt; &lt;span class="ss"&gt;:data&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
            &lt;span class="n"&gt;present&lt;/span&gt; &lt;span class="ss"&gt;:items&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Book&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;with: &lt;/span&gt;&lt;span class="no"&gt;Entities&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Book&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;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;本来手动组织这样的结构是微不足道的，引入框架后反而这个过程变得异常复杂和不灵活！～
请问有什么替代方法吗？&lt;/p&gt;</description>
      <author>rbprocareer</author>
      <pubDate>Mon, 25 Aug 2014 14:57:27 +0800</pubDate>
      <link>https://ruby-china.org/topics/21214</link>
      <guid>https://ruby-china.org/topics/21214</guid>
    </item>
  </channel>
</rss>
