2015-02-10 54 views
0

我試圖在顯示用戶表時爲每個User獲取最後一個Programme。 (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> 

但我怎麼得到最後程序爲每個用戶?

謝謝!

+0

是什麼意思最後一個程序?你能給出關於用戶的最後一個程序的標準嗎?用戶和程序之間的聯繫是什麼? – utnas 2015-02-10 02:01:05

+0

這只是一對多的關係,我只是想創建最後一個,但在一個循環中,我不能在加載頁面時使用每個user.id來完成我的請求,或者我可以,而這正是我期待的for;) – aimozs 2015-02-10 02:13:49

回答

1

考慮您的設置,這裏是你如何能顯示最後程序爲每個用戶:

<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

+0

如果'user'沒有'programme',在'last_prgramme'上調用'description'會產生錯誤 - 你可以通過'try'方法來檢索'description'。 – 2015-02-10 02:58:27

+0

如果您只想顯示擁有'programme'的用戶,則應該修改控制器,以便爲擁有程序到'@ profiles'變量的用戶分配配置文件。然後你可以使用'try'來消除。 – 2015-02-10 03:01:55

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 %>會做的伎倆

相關問題