ruby-on-rails - 导入具有 55 行 Roo 的 csv 会导致 ActionDispatch::Cookies::CookieOverflow

标签 ruby-on-rails csv cookies import roo

我正在使用 roo-rb/roo将数据的 csv 文件导入我的数据库。但是对于 55 行 4 列,我收到了 ActionDispatch::Cookies::CookieOverflow 错误。任何人都知道是什么导致了这种情况,或者是什么试图创建这个我猜是最大化的 cookie?

这是我的导入功能:

  def self.import(file)
    result = {
        errors: 0,
        success: 0,
        row_results: { }
    }

    spreadsheet = open_spreadsheet(file)
    header = spreadsheet.row(1)

    transaction do
      (2..spreadsheet.last_row).each do |i|
        row = Hash[[header, spreadsheet.row(i)].transpose]

        file_row_hash = row.to_hash
        first_name = file_row_hash['first_name']
        last_name = file_row_hash['last_name']
        company_name = file_row_hash['company_name']
        email = file_row_hash['email']
        company = Company.new(:name => company_name)

        if company.save
          password = Devise.friendly_token.first(8)
          user = StaffMember.new({ :email => email, :encrypted_password => password, :first_name => first_name, :last_name => last_name, :company_id => company.id })

          if user.save
            result[:success] += 1
            result[:row_results][i] = "row #{i}: #{company['name']} and #{company['first_name']} + #{company['last_name']} was successfully created"
          else
            result[:errors] += 1
            result[:row_results][i] = "row #{i}: #{company['name']} saved BUT staff_member #{company['first_name']} + #{company['last_name']} failed to save"
          end
        else
          result[:errors] += 1
          result[:row_results][i] = "row #{i}: #{company['name']} and #{company['first_name']} + #{company['last_name']} failed to be created."
        end
      end
    end
    return result
  end

最佳答案

您可以通过更改 cookie 的存储方式来解决此问题。

config/initializers/session_store.rb
你应该有类似的东西:

Rails.application.config.session_store :cookie_store, key: 'YOUR_KEY'

刚换:cookie:store:active_record_store像这样:
Rails.application.config.session_store :active_record_store, :key => 'YOUR_KEY'

关于ruby-on-rails - 导入具有 55 行 Roo 的 csv 会导致 ActionDispatch::Cookies::CookieOverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749567/

相关文章:

ruby-on-rails - Ruby On Rails : Order by child attribute

javascript - 如何更改颜色按钮而不重新加载页面

ruby-on-rails - 部署到heroku时清理 bundle 程序缓存

ruby-on-rails - 在 Rails 5 中使用响应者 gem

python-3.x - 如何从 CSV 输出中删除换行符

powershell - 比较两个CSV并仅导出两个都不存在的名称列表

csv - 从新的雅虎财经历史数据下载 csv 时出错

python - pandas read_csv 列 dtype 设置为十进制但转换为字符串

javascript - request.getCookies() 始终为空

php - setcookie 不起作用