gpt4 book ai didi

ruby-on-rails - Rails 不允许我在迁移期间更改记录

转载 作者:行者123 更新时间:2023-12-03 01:28:52 25 4
gpt4 key购买 nike

这一定是简单的事情,但它让我发疯!
我有一个迁移,我想稍后更新记录

class SubjectsTextField < ActiveRecord::Migration
def self.up
add_column :users, :subjects, :text

User.find(39).update_attribute :subjects, "hey there"
end

def self.down
remove_column :users, :subjects
end
end

该列已创建,但当我去检查记录 39 时,它的主题字段为空,并且没有说“嘿那里”。迁移期间不会引发任何错误,并且 update_attribute 行返回 true,就好像它已正常工作一样。

这行代码在控制台中运行完美,达到了预期的效果:

User.find(39).update_attribute :subjects, "hey there"

我尝试将 update_attribute 行放入第二次迁移中。如果我在一个“rake db:migrate”中将它们一直吹到当前,它仍然不起作用。

但这就是奇怪的部分。如果我运行两个单独的迁移,请说“rake db:migrate VERSION=10”仅创建列,然后第二个迁移使用“rake db:migrate”来更新属性IT WORKS!

到底发生了什么...我如何在迁移过程中修改记录?我似乎记得过去经常这样做。也许 Rails 2.3.2 有所不同?

谢谢!布赖恩

最佳答案

您需要对更改的模型调用 reset_column_information,然后才能使用新列。在 add_column 和 update 之间添加此内容:

User.reset_column_information

请参阅 ActiveRecord::Migration 上的“更改表后使用模型”页。

关于ruby-on-rails - Rails 不允许我在迁移期间更改记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/972562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com