【问题标题】:"Like", "Dislike" plugin for railsRails 的“喜欢”、“不喜欢”插件
【发布时间】:2010-09-13 18:14:40
【问题描述】:

是否有任何“喜欢”、“不喜欢”的 Rails 插件...

我浏览了评级插件...但它们都是 5 星评级插件...

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-plugins


    【解决方案1】:

    我建议通过采用经典投票模型功能来创建 likedislike 选项。

    所以你有 Vote 作为 UserVotable Item 之间的连接表。

    投票值可以作为 Vote.value + 1 = 喜欢,Vote.value -1 = 不喜欢,Vote.value = 中立/未投票。

    您的可投票项目的控制器可能如下所示:

    def like
      get_vote
      @vote.value += 1 unless @vote.value == 1
      @vote.save
      respond_to do |format|
        format.html
        format.js 
      end
    end
    
    def dislike
      get_vote
      @vote.value -= 1 unless @vote.value == -1
      @vote.save
      respond_to do |format|
        format.html
        format.js 
      end
    end
    
    private
    
    def get_vote
      current_item = @item.detect{|r| r.id == params[:id].to_i}
      @vote = current_item.votes.find_by_user_id(current_user.id)
      unless @vote
        @vote = Vote.create(:user_id => current_user.id, :value => 0)
        current_item.votes << @vote
      end
    end
    

    对于每个人的信息,这个问题不应该被否决。它完全有效。

    【讨论】:

      【解决方案2】:

      我知道一个答案已被接受,但我刚刚找到了一个名为 act_as_votable 的 gem,它可能满足您的需求:

      Acts As Votable 是专门为 Rails/ActiveRecord 模型编写的 Ruby Gem。这个 gem 的主要目标是:

      • 允许对任何模型进行投票、喜欢/不喜欢、赞成/反对等。
      • 允许任何模型投票。换句话说,投票不一定来自用户,它们可以来自任何模型(例如组或团队)。
      • 提供易于编写/阅读的语法。

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:

          我认为这个问题没有任何问题。

          上下投票仍然是评级。只用了两颗星。 :) 我似乎记得acts_as_rateable 允许定义星数。

          【讨论】:

            【解决方案5】:

            为什么不直接创建一个名为like 的新布尔字段?然后将其更新为 false 表示 disliketrue 表示 like。我怀疑你找到了这个功能的插件/gem。

            【讨论】:

            • 这个布尔字段会去哪里?
            • 嗯,是的...我的意思是,不会像建议的那样将布尔字段添加到现有表中。需要一个带有 user_id、likeable_id、可选多态 likeable_type 和布尔字段的连接表。
            猜你喜欢
            • 1970-01-01
            • 2014-09-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-27
            • 2022-08-03
            • 2022-12-13
            • 1970-01-01
            相关资源
            最近更新 更多