gpt4 book ai didi

ruby-on-rails - 修复此错误:NameError(未初始化的常量 ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column)

转载 作者:行者123 更新时间:2023-12-04 02:09:18 36 4
gpt4 key购买 nike

有两个应用程序。其中一个应用程序正在使用 rails 4.1.2。另一个应用程序正在使用 rails 5.0.1。以下是 rails 5 应用程序的工作方式:它检查用户是否已登录:

  • 如果用户已登录:那么用户应该能够继续前进。
  • 如果用户没有登录,那么它会将他们重定向到 rails 4 应用程序(用户可以在其中登录)。一旦用户使用 rails 4 应用程序登录:用户应该能够访问 rails 5 应用程序没有问题。

  • 我目前在我的 Rails 5 项目中使用以下 gem:
    gem 'mysql2', '~> 0.4.4'
    gem 'activerecord-session_store', '~> 1.0'

    然后我的 config/initializers/session_store.rb 中有以下内容文件:
    Rails.application.config.session_store :active_record_store, :key => ‘SOME_KEY’

    当前:如果用户未登录:则成功重定向用户。问题出在用户登录时。当登录用户尝试访问 rails 5 应用程序时,我收到此错误:
    NameError (uninitialized constant ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column)
  • 我确实注意到该应用程序已成功连接到数据库
  • 该应用程序似乎还可以访问 sessions初始请求时的表(当用户未登录时)。

  • 关于触发此错误的原因以及如何修复它的任何建议?最终:它几乎看起来好像 rails 5activerecord-session_store 不兼容和 mysql2 .

    最佳答案

    我们最终能够弄清楚。
    Marshal模块可以将 ruby​​ 对象序列化到数据库中。它还可以反序列化数据库中的内容以重新创建对象。

    当你序列化一个对象时,那里似乎也有一些低级信息,比如 mysql2 连接适配器。

    当 Rails 5 应用程序尝试反序列化数据时,它会引发此错误,因为 Rails 4 的 MySql2 连接适配器中存在的常量在该适配器的 Rails 5 版本中不存在。

    我们的解决方法是不为我们的 rails 5 应用程序存储或检索 session 表中的任何序列化对象。那成功了。

    如果我们真的需要从我们的 rails 5 应用程序的 session 表中检索序列化对象:那么我认为我们将不得不提出一个自定义解决方案。

    希望这对将来的其他人有所帮助!

    关于ruby-on-rails - 修复此错误:NameError(未初始化的常量 ActiveRecord::ConnectionAdapters::Mysql2Adapter::Column),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42306625/

    36 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com