2013-02-22 60 views
0

我遇到了問題thumbs_up gemthumbs_up其中一個最喜歡的照片(導軌)

這裏是我的應用程序是如何工作的:

圖片充當voteable,用戶作爲選民。他們可以喜歡也可以不喜歡圖片(所以plusminus計數也可以消極)。在圖片數據庫中:user_id,:name:image,:fame。 Fame是一個布爾值,默認爲false。

這裏就是我想現在要做的:

每24小時最高plusminus相符的圖片獲取其:fame值從虛假到真實的改變,從而從圖片庫(圖片#指數)和消失出現在圖片#最高。只有這一張照片每24小時更換一次。

基本上我不知道如何將最喜歡的圖片的布爾值更改爲每24小時爲真,以及如何選擇最喜歡的圖片。任何代碼表示讚賞。

+0

你應該改變你的問題,包括你的代碼有什麼問題。 – jvnill 2013-02-22 11:52:03

+0

我不知道如何做我想做的事情(每24小時更換一次圖片),只是粘貼代碼以防萬一。 – figdig 2013-02-22 11:55:39

回答

0

你的問題不是thumbs_up寶石。

你的問題是,你不知道如何安排定期任務。

您可以使用的工具是Whenever gem。它可以讓你做這樣的事情:

# in whenever 
every 24.hours do 
    rake "pictures:set_fame" 
end 

# lib/tasks/my_task.rake 
namespace :pictures do 
    task :set_fame => :environment do 
    # N.B.: I haven't had the chance to test this query. 
    Picture.where(fame: true).first.update_attribute(:fame, false) 
    Picture.order('tally DESC').first.update_attribute(:fame, true) 
    end 
end 
+0

所以我這樣做: '#附表 每2.minutes做 耙 「的照片:set_fame」 結束 ' 和 '#set_fame.rake 命名空間:圖片做 任務:set_fame =>:環境做 Picture.where(成名:真).update_attribute(:成名,假)。 Picture.order( 'plusminus_tally DESC')first.update_attribute(:名聲,真) 結束 end' ,它不更新。我錯在哪裏?並感謝您的幫助! – figdig 2013-02-22 13:55:55

+0

我真的不確定如何爲最流行的圖片編寫查詢,而且我現在無法對其進行測試。所以這可能是一個潛在的問題。 – Jesper 2013-02-22 14:19:55

+0

耙子中止! 未定義的方法'update_attribute'爲# /Users/XXXX/.rvm/gems/ruby-1.9.3-p286/gems/activerecord-3.2.8/lib/active_record/relation/delegation 。rb:45:in'method_missing' /Users/XXXX/rp/XXXX/lib/tasks/set_fame.rake:3:in ' 任務:TOP =>圖片:set_fame (通過使用--trace運行任務查看完整跟蹤) 也許這個錯誤有幫助嗎? :) – figdig 2013-02-22 14:21:38