首页 > 解决方案 > 处理旧数据库中的列名“哈希”

问题描述

我必须从 Rails 5.2 项目中访问旧数据库。不幸的是,我无法更改任何表列名称,并且该表包含一个名称hash不适用于 ActiveRecord 的列(将引发错误,因为hash它是现有方法)。我不需要该列,但我既不能重命名也不能删除它。

有没有办法告诉 ActiveRecord 不使用hash给定表的字段?

标签: ruby-on-railsrubyactiverecordruby-on-rails-5.2

解决方案


您可以使用ignored_columnsRuby on Rails 5.0 版中添加的方法来忽略数据库中的列。从文档中引用:

ignored_columns=(columns)

设置模型应该忽略的列名。忽略的列不会定义属性访问器,也不会在 SQL 查询中被引用。

只需将以下内容添加到您的模型中:

class MyModel < ApplicationRecord
  self.ignored_columns = %w(hash)
end

推荐阅读