【问题标题】:Updating current posts in production's targetable_id更新生产的 targetable_id 中的当前帖子
【发布时间】:2013-12-30 16:10:56
【问题描述】:

我有两张表,其中一张我更改为具有多态关联。我有一个大约有 40 个帖子的生产环境,我想更改他们的 targetable_idtargetable_types,但我在通过 CL 时遇到了问题:

Design.first.update_attributes(targetable_id: 1, targetable_type: "Collection")
-->false

在这种情况下,以前查找设计的方法是使用collection_id,现在改为targetable_id。此特定设计的集合 ID 为 1

如何在不删除所有帖子并重新开始的情况下做到这一点?

【问题讨论】:

  • 你可以试试 Design.first.targetable = Collection.find(1)

标签: ruby-on-rails ruby ruby-on-rails-4 polymorphic-associations production-environment


【解决方案1】:

您可以尝试使用update_columns,它将直接更新数据库而不执行任何回调或验证:

Design.first.update_columns(targetable_id: 1, targetable_type: "Collection")

但是,如果是我,我会尝试弄清楚它失败的确切原因......如果你尝试:

Design.first.update_attributes!(targetable_id: 1, targetable_type: "Collection")

...控制台应该会为您提供有关失败原因的更多信息,这可能会帮助您运行update_attributes

【讨论】:

  • 有没有办法做到这一点,但像 Design.find(14) 到 40 一样一次更新多个???
  • 当然,你可以把它放在一个迭代器中...Design.where(:id => 14..40).each {|design| design.update_columns( ... ) }
  • 没问题 - 很高兴为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 2011-06-21
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多