添加不需要用户模型的“赞”按钮
Adding a Like Button which doesn't require User Model
我正在尝试向我的 rails 网站添加一个赞按钮,所以我查看了 acts_as_votable gem 和 Active Record 信誉系统 gem .然而,这两者都需要一个用户模型(我认为),我想制作一个任何人都可以点击的按钮,无论他们是否登录。
有没有办法让这些 gem 中的一个具有这样的功能,或者我必须从头开始创建投票系统?此外,如果我确实必须从头开始,一些接近它的指南会有所帮助。
我会创建另一个名为 Like
的模型,然后在 Image
和 Like
之间创建一个 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
然后当有人点击“赞”按钮时,您需要使用 Image
的 id
创建一个 new Like
希望对您有所帮助。
如果您想要一个非常简单的系统,任何人都可以给 'image' 投票,您可以在每张图片上放置一个简单的计数器。
例如,假设您正在使用一个 sql 风味数据库,该数据库现在有一个名为 images
的 table,请使用 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
我遗漏了很多内容,但您可能会从中得到这样的想法,即在没有用户的情况下进行投票实际上非常简单。一旦您开始尝试跟踪谁喜欢什么,它只会变得复杂。
我正在尝试向我的 rails 网站添加一个赞按钮,所以我查看了 acts_as_votable gem 和 Active Record 信誉系统 gem .然而,这两者都需要一个用户模型(我认为),我想制作一个任何人都可以点击的按钮,无论他们是否登录。
有没有办法让这些 gem 中的一个具有这样的功能,或者我必须从头开始创建投票系统?此外,如果我确实必须从头开始,一些接近它的指南会有所帮助。
我会创建另一个名为 Like
的模型,然后在 Image
和 Like
之间创建一个 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
然后当有人点击“赞”按钮时,您需要使用 Image
id
创建一个 new Like
希望对您有所帮助。
如果您想要一个非常简单的系统,任何人都可以给 'image' 投票,您可以在每张图片上放置一个简单的计数器。
例如,假设您正在使用一个 sql 风味数据库,该数据库现在有一个名为 images
的 table,请使用 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
我遗漏了很多内容,但您可能会从中得到这样的想法,即在没有用户的情况下进行投票实际上非常简单。一旦您开始尝试跟踪谁喜欢什么,它只会变得复杂。