2012-05-25 69 views
1

管理員用戶的出生日期是今天在Ruby中我有有一個模型的用戶,並且用戶可以Ruby on Rails中的ADMIN 3如何通知在軌道上

用戶的表包括

t.boolean :admin,    :default => false 
    t.string :email,    :null => false, :default => "" 
    t.string :department 
    t.string :username 
    t.datetime :birthdate 
    t.string :encrypted_password, :null => false, :default => "" 

我的問題是如何顯示或通知管理員,今天是用戶的生日 我會很喜歡,如果有可能是一個模型,控制器和視圖包容性的答案感謝

回答

0

好你已有的模式,用戶是。我想補充的方法,這將告訴我們用戶的生日是今天或不:

class User 
    def birthday_today? 
    birthday == Date.today? 
    end 
end 

然後在控制器,假設你要索引頁面上顯示這一點。我相信你有你自己的身份認證解決方案,讓我們說調用CURRENT_USER會給使用的是現在登錄

class WelcomeController < ApplicationController 
    def index 
    @display_honourees = current_user.admin? 
    @honourees = User.all.find_all {|u| u.birthday_today? } 
    end 
end 

那裏的用戶,我們有我們需要的所有數據。現在我們來展示它們:

<html> 
    ... 
    <% if @display_honourees %> 
    <ul> 
     <% @honourees.each do |honouree| %> 
     <li>It's <%= honouree.username %>'s birthday today! Make a party!</li> 
     <% end %> 
    </ul> 
    <% end %> 
    ... 
</html> 

這是做你所需要的嗎?

+0

其實在第二個想法,我認爲這將是更好的跳過模型方法,讓數據庫做你的查找。然後你會打電話給@honourees = User.where(:birthday => Date.today)。這應該會更好。如果你有很多用戶,不要忘記索引生日,以便進一步加快查找速度。 – Renra

+0

或者甚至可以更好地向用戶「範圍honourees,lambda {where(:birthday => Date.today)}」添加一個範圍,以便該模型執行模型的工作,然後調用「@honourees = User.honourees」控制器。 – Renra

+0

也,'今天?'是一種實例方法,而不是類方法,所以它只是'birthday.today?' –