【问题标题】:Create Cookie Rails创建 Cookie Rails
【发布时间】:2014-06-08 19:15:03
【问题描述】:

我正在尝试找到一种方法来计算按用户 IP 地址过滤的特定按钮上的点击次数,以便只注册 1 次点击(例如每天)。

现在我并不想为此找到一个完全稳定的解决方案,只是为了过滤掉点击,这样用户就不能点击 5 次并用 5 次点击填充计数器。

所以我想为什么不设置一个 cookie (cookie[:installed] = true) 所以我可以这样做:

  def click_button
    url_to_redirect
    unless cookies[:installed]
      click_counter.increment
    end
  end

(我不知道这是否是一个很好的解决方案,只是头脑风暴。如果有人有更好的想法,那么欢迎你向我解释。)

除此之外,虽然我通读了Rails API on Cookies,但我没有任何运气实施这个“Cookie 解决方案”。

我怎样才能实现这个,我从哪里开始? (我读到在模型中创建逻辑是不好的)。

原谅我的新手,干杯

问题进展:

1.) 在我的控制器的 Show Action 中,我设置了 Cookie =>

  def show
    cookies[:installed] = false
  end

【问题讨论】:

  • 你能把显示链接的视图代码和控制器代码贴出来吗?
  • 这是一个简单的链接 (link_to "Download", '#'),它位于 SHOW 视图中。控制器动作是空的,因为我试图找到如何实现这一点:)
  • 如果计数达到 5 则不应点击链接?
  • 不,当用户第一次点击链接时 = 更新计数。如果他再次单击它 = 不要更新计数。

标签: ruby-on-rails cookies ruby-on-rails-4


【解决方案1】:

我宁愿将此信息存储在会话中,而不是存储在 cookie 中。所以例如像这样。

def download
  unless session[:clicked] do
    session[:clicked] = true
    do_something #remember to change this
  end 
end

您还可以将该信息存储在数据库中,以确保用户无法通过启动其他浏览器或清理 cookie 来绕过您的检查。例如,创建一个带有:ip 字段的Downloader 模型,并在提供文件之前通过request.remote_ip 搜索下载器。

如果我们在谈论文件下载,请记住使用send_file 而不是重定向。

【讨论】:

    猜你喜欢
    • 2016-07-08
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2013-04-01
    • 2014-03-06
    相关资源
    最近更新 更多