我想在所需的投票系统中创建无认证/登录。基本上任何人都可以投票和实施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
答案 0 :(得分:2)
看起来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
对象),这样您就可以定义投票的人等。