gpt4 book ai didi

ruby-on-rails - 无法从 Rails 控制台更新数据库列值

转载 作者:行者123 更新时间:2023-12-05 05:26:11 25 4
gpt4 key购买 nike

我在 Rails 中有一个名为 Release 的模态,我想从 Rails 控制台更新特定行的单个列值,我的 Release 模态是:

class Release < ActiveRecord::Base
belongs_to :user
has_many :histories, dependent: :destroy
end

所以首先我在生产环境中打开 Rails 控制台:

RAILS_ENV=production rails c

比我使用行 ID 找到特定行:

r=Release.find(92)

比我更新上面选定行的列的值:

x=r.reason
x.gsub!("abc","xyz")
r.reason=x
r.save!

以上所有查询均成功运行。但是当我再次检查该值时,它仍然显示旧值:

Release.find(92).reason

最佳答案

好的,我想通了,它与 object_id

有关

你将不得不做

x=r.reason.dup

然后它工作正常。

来源: It's because the way ActiveRecord detects that attributes are changed is through the setter. Therefore, if you use gsub! on an attribute, ActiveRecord doesn't know it needs to update the database.

编辑:它与数据库类型无关。

关于ruby-on-rails - 无法从 Rails 控制台更新数据库列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478961/

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