0

我遇到了thumbs_up gem的问题。

这是我的应用程序的工作方式:

Pictures act as voteable, users act as voters. 他们可以喜欢和不喜欢图片(所以加减计数也可以变为负数)。在图片数据库中:user_id, :name, :image, :fame. Fame 是一个布尔值,默认为 false。

这就是我现在想要做的:

每 24 小时,加减计数最高的图片的:fame值会从 false 变为 true,从而从图片库 (pictures#index) 中消失并出现在图片#highest 上。只有这一张图片,每24小时更换一次。

基本上我不知道如何每24小时将最喜欢的图片的布尔值更改为true,以及如何选择最喜欢的图片。任何代码表示赞赏。

4

2 回答 2

0

更改布尔值

@pic.update_attribute(:fame, true)

每 24 小时尝试使用whenevergem

https://github.com/javan/无论何时

http://railscasts.com/episodes/164-cron-in-ruby

选择得票最多的图片试试这个

@best_pic = Picture.all.sort{|a,b| b.votes.count <=> a.votes.count}.first
于 2013-02-22T12:57:51.507 回答
0

你的问题不是thumbs_up宝石。

您的问题是您不知道如何安排定期任务。

可以使用的工具是Each 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 
于 2013-02-22T13:03:19.373 回答