Ruby on rails 更新当前生产岗位';s目标用户id
我有两个表,其中一个表已更改为具有多态关联。我有一个大约40个帖子的生产环境,我想更改他们的Ruby on rails 更新当前生产岗位';s目标用户id,ruby-on-rails,ruby,ruby-on-rails-4,polymorphic-associations,production-environment,Ruby On Rails,Ruby,Ruby On Rails 4,Polymorphic Associations,Production Environment,我有两个表,其中一个表已更改为具有多态关联。我有一个大约40个帖子的生产环境,我想更改他们的targetable\u id和targetable\u类型,但我在CL中遇到了以下问题: Design.first.update_attributes(targetable_id: 1, targetable_type: "Collection") -->false 在本例中,前一种查找设计的方法是使用集合\u id,现在改为目标\u id。此特定设计上的集合ID为1 如何在不删除所有帖子并重新
targetable\u id
和targetable\u类型
,但我在CL中遇到了以下问题:
Design.first.update_attributes(targetable_id: 1, targetable_type: "Collection")
-->false
在本例中,前一种查找设计的方法是使用集合\u id
,现在改为目标\u id
。此特定设计上的集合ID为1
如何在不删除所有帖子并重新开始的情况下执行此操作?您可以尝试使用
update\u columns
直接更新数据库,而无需执行任何回调或验证:
Design.first.update\u列(targetable\u id:1,targetable\u type:“Collection”)
然而,如果是我,我会试图弄清楚它失败的确切原因。。。如果您尝试:
Design.first.update\u属性!(targetable_id:1,targetable_type:“Collection”)
。。。控制台应该为您提供有关失败原因的其他信息,这可能有助于您运行
update_attributes
您可以尝试Design.first.targetable=Collection.find(1)有没有办法做到这一点,但可以像Design一样一次更新多个。find(14)到40???当然,您可以将其放入迭代器中Design.where(:id=>14..40)。每个{Design{Design.update_columns(…)}
没问题-很高兴提供帮助!