我正在尝试向我的rails网站添加一个类似的按钮,所以我查看了acts_as_votable gem和Active Record Reputation System gem。但是,这两个都需要一个用户模型(我认为),我想制作一个任何人都可以点击的按钮,无论他们是否已登录。
有没有办法让其中一个宝石像这样运作,还是我必须从头开始创建投票系统?此外,如果我必须从头开始,那么接近它的一些指导将会有所帮助。
答案 0 :(得分:3)
如果你想要一个非常简单的系统,任何人都可以投票给'图像',你可以在每张图像上放一个简单的计数器。
例如,假设您现在正在使用具有名为images
的表的sql flavor数据库,请使用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
我遗漏了很多东西,但是你可以从中得到这样的想法,即没有用户的推动实际上非常简单。一旦你开始试图跟踪谁喜欢什么,它就会变得复杂。
答案 1 :(得分:1)
我创建了另一个名为Like
的模型,然后在one to many association
和Image
之间创建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
然后当有人点击“赞”按钮时,您需要使用new Like
id
创建Image
我希望这会有所帮助。