【问题标题】:Using activerecord on a table with a colum `changed` raises error在具有“已更改”列的表上使用 activerecord 会引发错误
【发布时间】:2011-03-15 22:10:33
【问题描述】:

旧数据库有一个列 changed(包含一个 updated_at 时间戳)。

这导致错误改变了吗?由 ActiveRecord 定义,但仅当我打开它的关联时。

我已经尝试过:

但这些都不能避免失败。

changed 列可以存在吗?有吗?我宁愿不必更改表,因为这也意味着要更改很多遗留代码。

【问题讨论】:

    标签: ruby ruby-on-rails-3 activerecord


    【解决方案1】:

    ActiveRecord 的少数缺点之一是所有已采用的属性名称。这是其中之一,解决 ActiveRecord 的声明可能是一个容易出错的噩梦。

    如果您的数据库支持它们,您可以创建一个表视图来向 ActiveRecord 显示不同的列名。

    【讨论】:

    • 我的数据库 (MySQL) 支持这一点,这听起来不错,因为它也解决了我遇到的一些其他问题。谢谢指点。
    【解决方案2】:

    尝试在初始化程序中禁用 ActiveRecord 中的部分更新:

    ActiveRecord::Base.partial_updates = false
    

    【讨论】:

    • 我认为这会禁用脏检查,但它仍然会定义更改后的方法。
    • 不 :(。我试过这个,但它仍然失败。为了记录:我在 rake 任务中使用它,所以我尝试了一个初始化程序并在 rake 开始时设置它任务。但错误仍然存​​在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多