我有一个名为Release的rails模式,我想从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
答案 0 :(得分:2)
好的我明白了,它与object_id
你必须这样做
x=r.reason.dup
然后它工作正常。
编辑:它与数据库类型无关。
答案 1 :(得分:0)
或者,我认为你也可以更明确地写出如下:
r.update_attributes reason: r.reason.gsub!('abc','xyz')