如何为我的博客帖子在Rails 4中创建一个投票系统,需要两个以上的投票选项?

时间:2015-03-18 05:39:20

标签: ruby-on-rails ruby gem vote

我已经构建了一个非常简单的rails博客,它基于现实生活中类似治疗的会话。在每篇博客文章的最后,用户都可以对帖子进行投票,然后就会说出这样的信息,这会让您感觉如何?"

我差不多完成了应用程序的开发,但我无法弄清楚如何扩展投票系统。

用户需要能够投票的6种不同的情感选项(快乐,悲伤,愤怒,灵感,无聊,焦虑)。这意味着一票不比另一票好。没有正面和负面的投票。他们只是不同。

到目前为止,我遇到的所有宝石和教程都有一个由两个选项组成的投票系统。我需要一种方法来实现6。

最后,我希望能够计算属于特定博客文章的所有情感,并在标题旁边显示最多投票的情绪。

有没有人尝试过这样的事情?在我弄清楚如何做到这一点之后,如果还没有它,我想把它变成一颗宝石。

1 个答案:

答案 0 :(得分:1)

(我假设用户只为每个帖子挑选一票,并且您正在使用最新的Rails 4.2)

只需创建一个引用UserPost的新表格,其中包含我们将使用the new enum的整数字段,例如。 Vote使用整数字段choice,因此模型将为:

class Vote < ActiveRecord::Base
  belongs_to :user
  belongs_to :post

  enum choice: %i[happy sad angry inspired boring anxious]
end

您的UserPost模型都会has_many :votes

然后(根据文档),您使用Vote.choices将名称哈希值设置为整数(您将使用此填充视图)。

...最后,你会得到一篇关于博客文章的情绪计数的哈希:

post.votes.group('votes.choice').count

我相信你可以在那里选出最多的选票。

更新

OP在评论中询问我发现了这一点,我认为我对他的回应可能对其他人有所帮助:

  

嗯,除了the docs that I already linked you to in my answer之外,我按照the rails-core mailing list宣布并讨论即将推出的功能,我按照@rails on twitter宣布各种事情,我读了the release notes for new versions在主要版本发布后我会通过the release notes in the guides