2015-12-22 192 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對象),這將允許您定義誰已投票等。