我有一個Ruby on Rails 3.2應用程序,用戶可以通過Youtube_it Rails gem將視頻直接上傳到youtube。視頻上傳後,人們可以對視頻進行投票。現在我已經設置了任何人都可以對視頻進行投票,並且他們不必註冊(使用設計)對視頻進行投票。Rails按IP地址每次限制每天投票1次
我想限制每個IP地址每天投票1票。如果一個人從IP地址投票,他們不應該能夠24小時投票。
我是新來的鐵軌,我似乎無法弄清楚如何實現這一點。我想我必須創建一個模型來存儲用request.remote_ip中的用戶IP地址。我如何將他們的投票限制爲每天一次?
我的routes.rb
resources :videos do
collection do
put '/vote_up/:id' => "videos#vote_up", :as => :vote_up
end
new do
post :upload
get :save_video
end
end
我的視頻顯示視圖
<%= link_to vote_up_videos_url(@video.id), class: "btn btn-main", :method => :put do %>
<i class="fa fa-thumbs-up"></i> Upvote this video
<% end %>
視頻控制器
def vote_up
@video = Video.find(params[:id])
@video.update_attribute(:votes_up, (@video.votes_up.to_i + 1))
redirect_to @video
end
你會怎麼做,如果有一個以上的用戶在IP地址?也許有兩個人在一個地址,或者使用運營商級NAT的運營商可能會有數千個用戶使用一個IP地址。 –
用戶是不是應該能夠在同一個視頻或任何視頻上再次投票?只能註冊用戶投票嗎? – spickermann
你不想這樣做。您無法控制並且無法知道請求IP地址來自哪裏。由於缺乏IPv4地址,ISP越來越多地被迫實施NAT,這意味着您看到的一個IP地址可以輕鬆映射到數百個個人。組織(圖書館,wifi點,大學)和小區連接也是如此。 –