使用包括在导轨4中的深嵌套

时间:2014-11-13 14:56:17

标签: ruby-on-rails ruby-on-rails-4 nested-attributes nested-includes

我有3个型号。

  ProjectDate (available dates for a project) which 
  has_many Events

  Events (the appointments on any given ProjectDate)
  belongs_to ProjectDate
  belongs_to User

  User (the person who created the Event)
  has_many Events

我想知道当我还提取与ProjectDate相关的所有事件时,如何使用包含(或者如果我可以使用包含)来获取与事件关联的用户属性。

我希望能够提取user.firstname(请参阅下面的视图代码)

这是我如何使用相关事件获取ProjectDats数组:

     @projectschedule  = ProjectDate.where(project_id: params[:p]).includes(:events).order(the_date: :asc)

我真的被卡住了。

以下是视图代码:

 
    <table width="100%;" class="">
      <tr>
        <td >
          <%=p.the_date.strftime("%A")%><br>
            <%=p.the_date.strftime("%b. %d ")%>
          </td>
          <td class="dateinfo"><%   p.events.users.each do |e| %>
             <ul >
               <li ><%= e.starts_on.strftime("%l:%m %P ") %><%= e.user.firstname %><%= e.description %><button >O</button><button >O</button></li>
            </ul><% end %> 
           </td>
         </tr>
       </table>
 <% end %> 

1 个答案:

答案 0 :(得分:1)

您可以嵌套包含这样的参数。

@projectschedule  = ProjectDate.where(project_id: params[:p]).includes(events: :user).order(the_date: :asc)

注意events: :user,这将确保两个事件及其用户都急切加载。