<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>bevanpf (爱死一只知更鸟)</title>
    <link>https://ruby-china.org/bevanpf</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>社区有人做过用户安全审计相关的吗</title>
      <description>&lt;p&gt;需要设计一个安全审计的系统及时发现用户异常登录行为，防止用户账号被盗。目前的想法是收集用户每次登录的 ip，经纬度，设备信息，分析其中的异常行为，具体怎么实现还没有思路，不知道大家有没有做过类似功能，可以指点一下吗&lt;/p&gt;</description>
      <author>bevanpf</author>
      <pubDate>Thu, 22 Oct 2020 10:58:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/40505</link>
      <guid>https://ruby-china.org/topics/40505</guid>
    </item>
    <item>
      <title>Redmine 这个方法没看懂</title>
      <description>&lt;p&gt;&lt;a href="https://github.com/redmine/redmine/blob/master/app/controllers/timelog_controller.rb" rel="nofollow" target="_blank" title=""&gt;TimeLogControlle&lt;/a&gt;的 new 方法中创建 TimeEntry 时传了一堆参数但是  &lt;a href="https://github.com/redmine/redmine/blob/master/app/models/time_entry.rb" rel="nofollow" target="_blank" title=""&gt;TimeEntry 类&lt;/a&gt; 的 initialize 方法好像并没有对参数进行处理，很迷惑，有知道的或者我哪里搞错了可以指点一下吗，不胜感激~&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;new&lt;/span&gt;
    &lt;span class="vi"&gt;@time_entry&lt;/span&gt; &lt;span class="o"&gt;||=&lt;/span&gt; &lt;span class="no"&gt;TimeEntry&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:project&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="vi"&gt;@project&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:issue&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="vi"&gt;@issue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;current&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:spent_on&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;current&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;today&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@time_entry.safe_attributes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:time_entry&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attributes&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;new_record?&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&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;activity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nil?&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;default_activity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;TimeEntryActivity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;default&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;activity_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;default_activity&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;id&lt;/span&gt;
      &lt;span class="k"&gt;end&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;hours&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hours&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&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;</description>
      <author>bevanpf</author>
      <pubDate>Tue, 04 Jul 2017 20:50:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/33399</link>
      <guid>https://ruby-china.org/topics/33399</guid>
    </item>
    <item>
      <title>只会 CRUD 的 Rails 菜鸟如何着手 Redmine 二次开发</title>
      <description>&lt;p&gt;说下基本情况：最近找到一个 Ruby 实习机会，工作内容是对 redmine 的二次开发，但是自己目前只做过一个 Rails 玩具项目，只会基本的 CRUD，更重要的是目前项目只有我一个人&lt;img title=":joy:" alt="😂" src="https://twemoji.ruby-china.com/2/svg/1f602.svg" class="twemoji"&gt; 完全没有老司机带，感觉无从下手。&lt;/p&gt;

&lt;p&gt;折腾过 redmine 的前辈还请不吝赐教，蟹蟹~&lt;/p&gt;</description>
      <author>bevanpf</author>
      <pubDate>Sun, 02 Jul 2017 21:50:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/33385</link>
      <guid>https://ruby-china.org/topics/33385</guid>
    </item>
  </channel>
</rss>
