Ruby on rails 无法更改ActiveRecord中的值

Ruby on rails 无法更改ActiveRecord中的值,ruby-on-rails,ruby,ruby-on-rails-4,activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Activerecord,当我在Rails数据库中加载一些值并更改它们的值时 x = MyModel.find(123) # => #<MyModel id: 123, column1: 0, column2: true, ...> x.column1 = nil # => nil x.column2 = nil # => nil x.save! # => true # byebug output from my after_save callback which can modif

当我在Rails数据库中加载一些值并更改它们的值时

x = MyModel.find(123) 
# => #<MyModel id: 123, column1: 0, column2: true, ...>
x.column1 = nil # => nil
x.column2 = nil # => nil
x.save! # => true
# byebug output from my after_save callback which can modify these values
[117, 120] in /home/sam/mina-NQA/releases/23/app/models/publisher.rb
   117:
   118:   def set_recommendation
   119:     byebug
=> 120:     return nil if self.column1
x = MyModel.find(123) 
# => #<MyModel id: 123, column1: nil, column2: nil, ...>

我还尝试了在不保存的情况下更新列:

x = MyModel.find(123) 
# => #<MyModel id: 123, column1: 0, column2: true, ...>
x.update_column(:column1, nil) # => true
x.update_column(:column2, nil) # => true
x = MyModel.find(123) 
# => #<MyModel id: 123, column1: nil, column2: nil, ...>
x = MyModel.find(123) 
# => #<MyModel id: 123, column1: 0, column2: true, ...> #!!!

在ActiveRecord对象上调用save时,除了save回调(在保存之前、保存之后),还将触发update回调。如果有,一定要查看更新(之前和之后)回调

嘿,你检查过第2列的默认值吗??可能是
true
so.@VishalJAIN是一个有效的问题,但不是。我现在将更新问题以反映。使用byebug gem和use查看所有回溯,并将其放入here@Sam还要检查名称
column2
的模型中是否有重写方法,因为代码看起来不错。如果您在
x之后检查
x
,请保存,它是否具有
nil
值?如果不是,保存后的
很可能是罪魁祸首。抱歉,看起来不是这样。请看评论。
t.integer  "column1",  limit: 4
t.boolean  "column2",  limit: 1
x = MyModel.find(123) 
# => #<MyModel id: 123, column1: 0, column2: true, ...>
x.update_column(:column1, nil) # => true
x.update_column(:column2, nil) # => true
x = MyModel.find(123) 
# => #<MyModel id: 123, column1: nil, column2: nil, ...>
x = MyModel.find(123) 
# => #<MyModel id: 123, column1: 0, column2: true, ...> #!!!