ruby-on-rails - 如何在具有名为 'valid' 的列的数据库上使用 ActiveRecord? (危险属性错误)

标签 ruby-on-rails activerecord informix

我正在访问一个无法更改的数据库,它有一个名为 valid 定义的列。每当我尝试访问属性时,都会遇到此异常:

valid? is defined by ActiveRecord (ActiveRecord::DangerousAttributeError)



异常是有道理的,但由于我无法更改数据库,我该如何解决这个错误?

我尝试“覆盖”该属性,但我不知道如何删除原始列。我可以成功调用这个 valid_column 方法,但是每当我尝试访问数据库中定义的另一个属性时,都会遇到相同的异常。它似乎仍在尝试映射有效列。
  def valid_column=(valid)
    write_attribute(:valid, valid)
  end
  def valid_column
      read_attribute(:valid)
  end

我不确定这是否重要,但这里是我的环境的详细信息:
  • Windows Ruby 1.8.6
  • Linux 服务器上的 Informix 数据库
  • activerecord (2.3.4)
  • activerecord-informix-adapter (1.0.0.9250)
  • ruby-informix (0.7.1)

  • 提前致谢!

    最佳答案

    尝试这个:

    class MyTable < AR:Base
       class << self
         def instance_method_already_implemented?(method_name)
           return true if method_name == 'valid'
           super
         end
       end
    end
    

    这是一个 hack,它可能在 rails 3 中不起作用,但它现在可以解决这个问题。

    我在 ruby on rails mailing list 上找到的

    如果你愿意,你也可以看看 datamapper ,它可以更理智地处理这些事情。

    关于ruby-on-rails - 如何在具有名为 'valid' 的列的数据库上使用 ActiveRecord? (危险属性错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1510875/

    相关文章:

    ruby-on-rails - Devise + Omniauth-Facebook 获取用户的电话#

    ruby-on-rails - 我们是否将 Rails ActiveRecord 用作混合结构,即数据结构 + 对象?

    sql - Rails ActiveRecord 和数据库规范化

    c - 什么是 12345 >> 2 真的在做算术?

    ruby-on-rails - 字符串到序列化数组?

    ruby-on-rails - 如何筛选 Rails 模型中太大的整数?

    ruby-on-rails - Rails 4 + 枚举 : How to upcase the values in a collection_select?

    php - Codeigniter 事件记录选择、左连接、计数

    java - Informix的Timeseries表批量插入

    mysql - Informix 查询Where 子句