我正在访问一个无法更改的数据库,它有一个名为 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
我不确定这是否重要,但这里是我的环境的详细信息:
提前致谢!
最佳答案
尝试这个:
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/