首页 > 解决方案 > 使用 ActiveRecord 和带有撇号的列

问题描述

我有一个无法修改的数据库,它包含的列名......让我们说愚蠢。大多数都很好,但其中一些有一个撇号。一种叫做“配偶生日”。

我可以establish_connection使用Model.count. 但是当我尝试Model.find时,它失败并出现以下错误:

/var/lib/gems/2.3.0/gems/activemodel-5.2.2/lib/active_model/attribute_methods.rb:380:in `module_eval': /var/lib/gems/2.3.0/gems/activemodel-5.2.2/lib/active_model/attribute_methods.rb:381: syntax error, unexpected tIDENTIFIER, expecting ')' (SyntaxError)
...       define_method(:'Spouse's Birthday_before_type_cast') ...
...                               ^
/var/lib/gems/2.3.0/gems/activemodel-5.2.2/lib/active_model/attribute_methods.rb:382: syntax error, unexpected tIDENTIFIER, expecting end-of-input
          attribute_before_type_cast("Spouse's Birthday", *args)

错误消息非常简单;列名中的撇号正在破坏一切。我需要一种方法来逃避它,或者提供establish_connection可以将现有列名映射到我更喜欢使用的名称的东西。

标签: rubyactiverecordactivemodel

解决方案


推荐阅读