<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>yaoge (尧戈)</title>
    <link>https://ruby-china.org/yaoge</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>使用 store 能这样建立关系吗？</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;User&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="n"&gt;store&lt;/span&gt; &lt;span class="ss"&gt;:settings&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;accessors&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:source_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:other&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;p&gt;这样的资料存储方式可以像下面这样使用 belongs_to 建立关系吗？&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;User&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="n"&gt;store&lt;/span&gt; &lt;span class="ss"&gt;:settings&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;accessors&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:source_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:other&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

  &lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:source&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>yaoge</author>
      <pubDate>Wed, 23 Oct 2013 20:40:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/14974</link>
      <guid>https://ruby-china.org/topics/14974</guid>
    </item>
    <item>
      <title>有没有可以给模型标注星星的 GEM？</title>
      <description>&lt;p&gt;就是当前用户可以为各种模型标注星星的 gem&lt;/p&gt;</description>
      <author>yaoge</author>
      <pubDate>Wed, 16 Oct 2013 22:03:02 +0800</pubDate>
      <link>https://ruby-china.org/topics/14800</link>
      <guid>https://ruby-china.org/topics/14800</guid>
    </item>
    <item>
      <title>一个比较典型多对多关联查询以及相关的问题请教</title>
      <description>&lt;p&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;User&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="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:team_user_ships&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:dependent&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:delete_all&lt;/span&gt;
&lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:teams&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:through&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:team_user_ships&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;Team&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="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:team_user_ships&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:dependent&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:delete_all&lt;/span&gt;
&lt;span class="n"&gt;has_many&lt;/span&gt; &lt;span class="ss"&gt;:users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="ss"&gt;:through&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="ss"&gt;:team_user_ships&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="c1"&gt;# Table name: team_user_ships&lt;/span&gt;
&lt;span class="c1"&gt;#  team_id    :integer&lt;/span&gt;
&lt;span class="c1"&gt;#  user_id    :integer&lt;/span&gt;
&lt;span class="c1"&gt;#  role       :integer&lt;/span&gt;
&lt;span class="c1"&gt;#  created_at :datetime         not null&lt;/span&gt;
&lt;span class="c1"&gt;#  updated_at :datetime         not null&lt;/span&gt;
&lt;span class="c1"&gt;#  id         :integer          not null, primary key&lt;/span&gt;
&lt;span class="c1"&gt;#  status     :integer&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;TeamUserShip&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="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:user&lt;/span&gt;
&lt;span class="n"&gt;belongs_to&lt;/span&gt; &lt;span class="ss"&gt;:team&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;中间表中有两个非 ID 字段 role,status&lt;/p&gt;

&lt;p&gt;在学习 rails 多对多的过程中想到一下几个需求，不知道 rails 下怎么很好的处理，可能是之前用其他语言留下的后遗症，总觉得还有更合理或高效的解决方法&lt;/p&gt;

&lt;p&gt;1、当 Urser 要登录的时候同时也选择了登录的团队信息，大家一般用什么方法取得中间表的非 ID 字段 role 和 status，如果中间表没有主键 ID 又是怎么取的？&lt;/p&gt;

&lt;p&gt;2、当需要在 View 中列出指定 Team 中的所有 User 时也要显示出用户的 role 和 status，这样的需求，又怎么处理？在 view 中 each 时一个一个查询吗？&lt;/p&gt;

&lt;p&gt;3、&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="vi"&gt;@T&lt;/span&gt;&lt;span class="o"&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;find_by_sql&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"select * from users u,team_user_ships s where u.id = s.user_id and s.team_id=xxxx"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="vi"&gt;@T.class&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="no"&gt;Array&lt;/span&gt;  
&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="vi"&gt;@T&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;class&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="nb"&gt;puts&lt;/span&gt; &lt;span class="vi"&gt;@T&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;role&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="vi"&gt;@T&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;status&lt;/span&gt;
&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这时我对需求 2 的做法，可是不明白的是，&lt;a href="/T" class="user-mention" title="@T"&gt;&lt;i&gt;@&lt;/i&gt;T&lt;/a&gt;[0] 明明是一个 User 类实例，而 User 中并没有 role 和 status 这两个属性或者方法，这个查询出来的&lt;a href="/T" class="user-mention" title="@T"&gt;&lt;i&gt;@&lt;/i&gt;T&lt;/a&gt;[0].status 和&lt;a href="/T" class="user-mention" title="@T"&gt;&lt;i&gt;@&lt;/i&gt;T&lt;/a&gt;[0].role 又是什么个情况，如果直接在控制台输出&lt;a href="/T" class="user-mention" title="@T"&gt;&lt;i&gt;@&lt;/i&gt;T&lt;/a&gt;[0] 的到的结果中也是没有 status,role 的;另外这个时候同时查询出来了 2 个 ID 又是如何处理的呢？&lt;/p&gt;</description>
      <author>yaoge</author>
      <pubDate>Fri, 23 Aug 2013 21:29:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/13564</link>
      <guid>https://ruby-china.org/topics/13564</guid>
    </item>
  </channel>
</rss>
