【问题标题】:Adding a Like Button which doesn't require User Model添加不需要用户模型的赞按钮
【发布时间】:2015-10-28 22:41:27
【问题描述】:

我正在尝试向我的 rails 站点添加一个赞按钮,因此我查看了acts_as_votable gem 和 Active Record Reputation System gem。但是,这两个都需要用户模型(我认为),并且我想制作任何人都可以点击的类似按钮,无论他们是否登录。

有没有办法让这些 gem 发挥这样的作用,还是我必须从头开始创建投票系统?此外,如果我必须从头开始,一些指导方针会有所帮助。

【问题讨论】:

  • 人们到底喜欢什么?
  • 一个名为“Images”的模型

标签: javascript ruby-on-rails ruby ajax social-media-like


【解决方案1】:

如果您想要一个非常简单的系统,任何人都可以为“图片”投票,您可以在每张图片上放置一个简单的计数器。

例如,假设您现在正在使用具有名为 images 的表的 sql 风格数据库,请使用类似这样的 change 方法进行迁移:

def change
  add_column :images, :likes, :integer, default: 0
end

然后在您的ImagesController 或您所称的任何内容中,执行如下操作

def upvote
  image = Image.find(params[:id]) # in Rails 4, using strong params, this would look a bit different.
  image.update_attributes(likes: image.likes + 1)
  render json: image
end

我遗漏了很多内容,但您可能会从中了解到,在没有用户的情况下进行投票实际上非常简单。一旦您开始尝试跟踪谁喜欢什么,它只会变得复杂。

【讨论】:

    【解决方案2】:

    我将创建另一个名为 Like 的模型,然后在 ImageLike 之间创建一个 one to many association

    rails g resource Like image_id:integer
    

    然后通过运行更新您的数据库

    rake db:migrate
    

    然后你会想要创建关联。

    # like.rb
    class Like < ActiveRecord::Base
      belongs_to :image
    end
    
    # image.rb
    class Image < ActiveRecord::Base
       has_many :likes
    end
    

    然后当有人点击赞按钮时,你会想用idImage 创建一个new Like

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-26
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多