如何在具有名为"valid"的列的数据库上使用ActiveRecord?(DangerousAttributeError)

Mic*_*ael 14 informix activerecord ruby-on-rails

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

有效?由ActiveRecord定义(ActiveRecord :: DangerousAttributeError)

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

我尝试"覆盖"该属性,但我不知道如何删除原始列.我可以成功调用这个valid_column方法,但是每当我尝试访问数据库中定义的另一个属性时,我都会得到相同的异常.它似乎仍在尝试映射有效列.

  def valid_column=(valid)
    write_attribute(:valid, valid)
  end
  def valid_column
      read_attribute(:valid)
  end
Run Code Online (Sandbox Code Playgroud)

我不确定这是否重要,但以下是我的环境的详细信息:

  • Windows Ruby 1.8.6
  • Linux服务器上的Informix数据库
  • activerecord(2.3.4)
  • activerecord-informix-adapter(1.0.0.9250)
  • ruby-informix(0.7.1)

提前致谢!

Bar*_*cat 11

试试这个:

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

这是一个黑客,它可能无法在rails 3中工作,但它现在可以解决问题.

我在ruby on rails邮件列表上找到了它

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