thumbs_up一个最喜欢的图片(rails)

时间:2013-02-22 11:49:58

标签: ruby-on-rails boolean voting

我遇到了thumbs_up gem的问题。

以下是我的应用的工作原理:

图片充当投票,用户充当选民。他们可以喜欢和不喜欢图片(所以加号计数也可能是负面的)。在图片数据库中:user_id,:name:image:fame。 Fame是一个布尔值,默认为false。

以下是我现在想做的事情:

每24小时,具有最高plusminus计数的图片将其:fame值从false更改为true,从而从图片库(图片#index)中消失并出现在图片#最高。只有这一张照片,每24小时更换一次。

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

2 个答案:

答案 0 :(得分:0)

更改布尔值do

@pic.update_attribute(:fame, true)

每24小时尝试使用whenever宝石

https://github.com/javan/whenever

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

以最多票数选择图片试试这个

@best_pic = Picture.all.sort{|a,b| b.votes.count <=> a.votes.count}.first

答案 1 :(得分: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