繁体   English   中英

Rails没有登录投票?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM