<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>physaris (physaris)</title>
    <link>https://ruby-china.org/physaris</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>请教大大一个 Ruby 类继承的问题</title>
      <description>&lt;p&gt;场景是这样的：&lt;/p&gt;

&lt;p&gt;有一个虚父类，在数据库里面不会对应实际的表，
有很多子类会继承这个父类，在数据库中将会对应实际存在的表，
想要让所有子类默认以 form_date 时间倒序排列。&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;Form&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abstract_class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
  &lt;span class="n"&gt;default_scope&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;table_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.form_date DESC"&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;class&lt;/span&gt; &lt;span class="nc"&gt;SubForm&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Form&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;大大可能会有疑问为什么要在&lt;code&gt;form_date&lt;/code&gt;前面加上&lt;code&gt;#{table_name}.&lt;/code&gt;是因为这些 Model 将来会 join 查询，
但 join 的表里面可能有的也包含&lt;code&gt;form_date&lt;/code&gt;字段，这样 Rails 会报错&lt;code&gt;ambiguous column name: form_date&lt;/code&gt;。
但如果采用我现在这样的代码，因为虚父类不对应表所以会有语法错误&lt;code&gt;default_scope order(".form_date DESC")&lt;/code&gt;。&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;Form&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveRecord&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Base&lt;/span&gt;
  &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abstract_class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
  &lt;span class="n"&gt;default_scope&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;table_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.form_date DESC"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;abstract_class&lt;/span&gt;  &lt;span class="c1"&gt;# &amp;lt;---------------&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;SubForm&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;Form&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果采用上面的代码呢，箭头所指这行貌似在子类中不执行，子类没有被按照&lt;code&gt;form_date&lt;/code&gt;倒序排列。&lt;/p&gt;

&lt;p&gt;Ruby 基础不太好，请教大大们，谢谢！&lt;/p&gt;</description>
      <author>physaris</author>
      <pubDate>Wed, 20 Nov 2019 11:55:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/39264</link>
      <guid>https://ruby-china.org/topics/39264</guid>
    </item>
    <item>
      <title>请教大大为什么有时候 active record 里面 count 中有数字，但实际查询出来没有内容</title>
      <description>&lt;p&gt;请教大大，下面代码是不是写的不对，注释的地方标出了问题。&lt;/p&gt;

&lt;p&gt;数据库是 sqlite3，框架是 rails 3.2.22，ruby 版本是 2.1.10&lt;/p&gt;

&lt;p&gt;感谢！&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;destruction_item1s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;delete_all&lt;/span&gt;
&lt;span class="n"&gt;kases&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&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;kase&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="c1"&gt;# DestructionItem1.transaction do&lt;/span&gt;
        &lt;span class="n"&gt;kase&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;kase_item1s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&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;kase_item1&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
            &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
            &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;destruction_item1s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;count&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;                &lt;span class="c1"&gt;# 这一行count是有数字的  &amp;lt;-------------&lt;/span&gt;
            &lt;span class="n"&gt;byebug&lt;/span&gt;
            &lt;span class="c1"&gt;# 但下面的这个循环并不会被执行，因为destruction_item1s = []，是空的  &amp;lt;-------------&lt;/span&gt;
            &lt;span class="n"&gt;destruction_item1s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&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;destruction_item1&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
                &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;product_id&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;destruction_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;product_id&lt;/span&gt;
                    &lt;span class="n"&gt;destruction_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;amount&lt;/span&gt;
                    &lt;span class="n"&gt;found&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&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;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;found&lt;/span&gt;
                &lt;span class="no"&gt;DestructionItem1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                    &lt;span class="ss"&gt;destruction_id: &lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;category_id: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;category_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;product_id: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;product_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;spec: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;spec&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;bottles_per_box: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bottles_per_box&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;amount: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;amount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;amount_box: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;amount_box&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;price_supply: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;price_supply&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="ss"&gt;price_market: &lt;/span&gt;&lt;span class="n"&gt;kase_item1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;price_market&lt;/span&gt;&lt;span class="p"&gt;,&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="c1"&gt;# end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>physaris</author>
      <pubDate>Wed, 30 Oct 2019 16:27:22 +0800</pubDate>
      <link>https://ruby-china.org/topics/39200</link>
      <guid>https://ruby-china.org/topics/39200</guid>
    </item>
    <item>
      <title>怎样用较低的薪水雇佣程序员</title>
      <description>&lt;p&gt;在 Hacker News 上面看到一篇文章觉得有意思，分享给大家。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://shichengwei.com/archives/94" rel="nofollow" target="_blank" title=""&gt;http://shichengwei.com/archives/94&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;大家可以对这个话题发表一下自己的想法。&lt;img title=":grinning:" alt="😀" src="https://twemoji.ruby-china.com/2/svg/1f600.svg" class="twemoji"&gt; &lt;/p&gt;</description>
      <author>physaris</author>
      <pubDate>Thu, 08 Dec 2016 08:40:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/31840</link>
      <guid>https://ruby-china.org/topics/31840</guid>
    </item>
    <item>
      <title>如何获取 local variable 的名字</title>
      <description>&lt;p&gt;各位好，在网上搜了好久没找到方法，求助一下本坛。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;var1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="c1"&gt;#将var1作为参数传入func，怎么获取到var1的变量名即"var1"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;var1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>physaris</author>
      <pubDate>Sun, 30 Aug 2015 08:20:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/27119</link>
      <guid>https://ruby-china.org/topics/27119</guid>
    </item>
  </channel>
</rss>
