加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在名为“有效”的列的数据库上使用ActiveR

发布时间:2020-12-16 20:30:54 所属栏目:百科 来源:网络整理
导读:我正在访问一个我不能更改的数据库,它有一个名为valid定义的列.任何时候我尝试访问一个属性,我得到这个异常: valid? is defined by ActiveRecord (ActiveRecord::DangerousAttributeError) 这个例外是有道理的,但是由于我无法更改数据库,我该如何解决这个错
我正在访问一个我不能更改的数据库,它有一个名为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

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

我发现它在ruby on rails mailing list

如果你想要的话,你也可以看看datamapper,它更适合处理这些事情.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读