2015-12-22 107 views
-1

我想创建一个没有认证/登录所需的投票系统。基本上任何人都可以投票和执行cookie和ip来限制投票。我不使用设计就像投票一样。到目前为止,还没有添加选票。我不确定用户是否正在创建。Rails没有登录投票?

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 
+2

向我们展示您迄今为止所做的工作。一些代码或问题我们可以帮助您 – MilesStanfield

+0

问题是什么? – csmckelvey

+0

对不起!我是新来的,但我已经从我的应用程序添加了一些代码。 – xcallmezach

回答

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对象),这将允许您定义谁已投票等。