Rails没有登录投票?

时间:2015-12-22 05:37:08

标签: ruby-on-rails

我想在所需的投票系统中创建无认证/登录。基本上任何人都可以投票和实施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

1 个答案:

答案 0 :(得分:2)

看起来acts_as_votable 标识符与“投票”相关联:

enter image description here

标识符可以是任何(似乎),这意味着它也可以是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对象),这样您就可以定义投票的人等。