<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>harryyoung (yanghualin)</title>
    <link>https://ruby-china.org/harryyoung</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>Active Model Serializer JSON API 序列化将下划线变为横线，那客户端提交数据的时候怎么处理？</title>
      <description>&lt;p&gt;Active Model Serializer JSON API 序列化将键中的下划线变为横线，我知道可以修改设置不进行转换，但似乎转为横线更符合规范吧（不确定）。&lt;/p&gt;

&lt;p&gt;但是客户端在提交数据的时候，如果用横线，那 params 中键都是横线，就没办法直接用，需要转换。另一种是直接让客户端提交下划线的，但感觉 API 出去的都是横线，提交的时候又是下划线，很不一致。&lt;/p&gt;

&lt;p&gt;所以这种情况怎么处理？感觉还是让客户端提交横线的比较一致，那么 Active Model Serializer Deserialize 的时候有办法自动转为下划线，还是要手动转？&lt;/p&gt;</description>
      <author>harryyoung</author>
      <pubDate>Sat, 05 Nov 2016 10:45:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/31523</link>
      <guid>https://ruby-china.org/topics/31523</guid>
    </item>
    <item>
      <title>REST API 如何在服务器端暂存数据，以便下次请求使用？</title>
      <description>&lt;p&gt;我的应用场景是这样的：&lt;/p&gt;

&lt;p&gt;用户进行某项操作，需要先验证，验证通过完成操作创建记录。服务器端先将验证码发送到客户端，客户端将数据连同用户输入的验证码一起发回，和服务器端保存的验证码比对，正确则继续，否则失败。&lt;/p&gt;

&lt;p&gt;遇到的问题是：
我在使用 RAILS 5 API，REST API 不建议在服务器端保存状态，默认的 rails 5 api 中 session 都没有启用，所以不能这样暂存验证码；由于用户可能放弃这项操作，不能先创建记录，否则会产生大量冗余数据，所以操作是验证后新建记录，所以不能先将验证码存到数据库中。另外，我在想将验证码做成 token 发送给客户端，客户端再发回来，但感觉也不是很好。&lt;/p&gt;

&lt;p&gt;所以，请问，针对这种情况有什么比较好的处理方法？谢谢。&lt;/p&gt;</description>
      <author>harryyoung</author>
      <pubDate>Thu, 13 Oct 2016 11:29:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/31309</link>
      <guid>https://ruby-china.org/topics/31309</guid>
    </item>
    <item>
      <title>Rails 5 validates on: :update 验证问题</title>
      <description>&lt;p&gt;我需要在更新的时候验证一个字段存在，而在创建的时候不验证。&lt;/p&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;Ent&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ApplicationRecord&lt;/span&gt;
  &lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;presence: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;on: :update&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="nb"&gt;require&lt;/span&gt; &lt;span class="s1"&gt;'test_helper'&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;EntTest&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;ActiveSupport&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;TestCase&lt;/span&gt;

  &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"ent attributes must not be empty when creating"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;ent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Ent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;
    &lt;span class="n"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;ent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invalid?&lt;/span&gt;
    &lt;span class="n"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;ent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;any?&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="s2"&gt;"ent attributes must not be empty when updating"&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="n"&gt;ent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Ent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;first&lt;/span&gt;
    &lt;span class="n"&gt;ent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;name: &lt;/span&gt;&lt;span class="s1"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;ent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invalid?&lt;/span&gt;
    &lt;span class="n"&gt;assert&lt;/span&gt; &lt;span class="n"&gt;ent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:name&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;any?&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;p&gt;请问我哪里写错了吗？谢谢。(把验证那行注释掉，两个测试都正常失败）&lt;/p&gt;</description>
      <author>harryyoung</author>
      <pubDate>Tue, 27 Sep 2016 20:27:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/31179</link>
      <guid>https://ruby-china.org/topics/31179</guid>
    </item>
  </channel>
</rss>
