在具有“已更改”列的表上使用 activerecord 会引发错误
Posted
技术标签:
【中文标题】在具有“已更改”列的表上使用 activerecord 会引发错误【英文标题】:Using activerecord on a table with a colum `changed` raises error 【发布时间】:2011-03-15 22:10:33 【问题描述】:旧数据库有一个列 changed
(包含一个 updated_at 时间戳)。
这导致错误改变了吗?由 ActiveRecord 定义,但仅当我打开它的关联时。
我已经尝试过:
覆盖instance_method_already_implemented? 还有alias该专栏。 使用write_attribute
和read_attribute
添加自定义方法。
但这些都不能避免失败。
changed
列可以存在吗?有吗?我宁愿不必更改表,因为这也意味着要更改很多遗留代码。
【问题讨论】:
【参考方案1】:ActiveRecord 的少数缺点之一是所有已采用的属性名称。这是其中之一,解决 ActiveRecord 的声明可能是一个容易出错的噩梦。
如果您的数据库支持它们,您可以创建一个表视图来向 ActiveRecord 显示不同的列名。
【讨论】:
我的数据库 (mysql) 支持这一点,这听起来不错,因为它也解决了我遇到的一些其他问题。谢谢指点。【参考方案2】:尝试在初始化程序中禁用 ActiveRecord 中的部分更新:
ActiveRecord::Base.partial_updates = false
【讨论】:
我认为这会禁用脏检查,但它仍然会定义更改后的方法。 不 :(。我试过这个,但它仍然失败。为了记录:我在 rake 任务中使用它,所以我尝试了一个初始化程序并在 rake 开始时设置它任务。但错误仍然存在。以上是关于在具有“已更改”列的表上使用 activerecord 会引发错误的主要内容,如果未能解决你的问题,请参考以下文章
使用 DbVisualizer 在具有包含 COALESCE() 的唯一索引的表上出现 SQLITE_CORRUPT 错误