1

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

有没有办法让这些宝石中的一个发挥这样的作用,还是我必须从头开始创建投票系统?此外,如果我必须从头开始做,一些接近它的指南会很有帮助。

4

2 回答 2

3

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

例如,假设您正在使用一个 sql 风格的数据库,该数据库现在有一个被调用的表images,请使用如下方法进行迁移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

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

于 2015-08-06T01:23:48.790 回答
1

我会创建另一个模型Like,然后创建一个one to many associationbetween Imageand Like

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

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

我希望这有帮助。

于 2015-08-06T01:19:14.267 回答