[英]Rails No log-in voting?
我想在所需的投票系统中创建无身份验证/登录的帐户。 基本上任何人都可以投票并实施cookie和ip来限制投票。 我不是在使用装置,而只是在投票。 到目前为止,尚未添加投票。 我不确定是否正在创建用户。
post_controller.rb
def current_user
@current_user ||= User.find(session[:user_id])
end
routes.rb
Rails.application.routes.draw do
resources :posts do
member do
put "like", to: "posts#upvote"
end
end
root "posts#index"
end
post.rb模型
class Post < ActiveRecord::Base
acts_as_votable
end
看起来acts_as_votable
必须将标识符与“投票”相关联:
标识符可以是任何东西(看起来),这意味着它也可以是IP
:
#app/models/ip.rb
class Ip < ActiveRecord::Base
# columns id | ip | user_agent | created_at | updated_at
end
如果您制作了一个Ip
模型(如上所述),则可以使用find_or_create_by
来填充它:
#config/routes.rb
resources :posts do
match :vote, via: [:post,:delete], on: :member
end
#app/controllers/posts_controller.rb
class PostsController < ApplicationController
def vote
@ip = Ip.find_or_create_by ip: request.remote_ip
if request.delete?
# remove vote
elsif request.post?
# add vote
end
end
end
这将允许您存储IP
地址(来自request
对象),这将使您可以定义投票者等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.