获取rails中每个用户的最后一项

时间:2015-02-10 01:55:14

标签: ruby-on-rails ruby activerecord

我在显示用户表时尝试获取每个Programme的最后一个User。 (User有一个ProfileProfile属于User

在我的控制器中,我正在获取所有程序,如下所示:

@programmes = Programme.all

<table>
 <% @profiles.each do |profile| %>
  <tr>
   <td>
     <% @programmes.each do |programme| %>
      <% if programme.client == profile.user.id %>
       <%= programme.description %>
      <% end %>
     <% end %>
    </tr>
 <% end %>
</table>

但是如何为每个用户获取最后程序?

谢谢!

2 个答案:

答案 0 :(得分:1)

根据您的设置,您可以在此处为每位用户显示 last 计划:

<table>
  <% @profiles.each do |profile|
    <% user = profile.user
    <% last_programme = user.programmes.last %>
    <tr>
      <td><%= last_programme.try(:description) %></td>
    </tr>
  <% end %>
</table>

http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-last

答案 1 :(得分:1)

要查找最后一条记录,您只需拨打.last

即可

您也可以致电.first .second .third

ActiveRecord::FinderMethods

Person.last # returns the last object fetched by SELECT * FROM people
Person.where(["user_name = ?", user_name]).last
Person.order("created_on DESC").offset(5).last
Person.last(3) # returns the last three objects fetched by SELECT * FROM people.

在你的情况下,<% user.programmes.last %>会做到这一点