Когда я загружаю некоторые из значений в моей базе данных Rails и изменить их значение,Невозможно изменить значение в ActiveRecord
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, ...>
либо перегрузочные то же значение или просмотр MyModel # показать страницу возвращается значение!
x = MyModel.find(123)
# => #<MyModel id: 123, column1: 0, column2: true, ...> # !!!
Почему мои изменения не сохраняются? Edit: byebug показывает, что мои изменения никогда не применялись, и это не связано с настойчивостью. Почему мои изменения не применяются?
у меня есть after_save обратного вызова after_save :set_column1
. Но я уверен, что это не вызывает мою проблему, потому что в ней есть строка вроде return nil unless self.column2
. У меня есть before_save :create_sub_model
, который создает только вложенную модель. У меня есть фильтры, но ни один из них не влияет на MyModel # show, и ни один из них не обновляет column1
или column2
.
Столбцы не имеют значений по умолчанию. Из db/schema.rb
:
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, ...> #!!!
Есть функция в Rails/ActiveRecord, чтобы спросить: «Что все вещи, которые происходят после загрузки? (Там нет такой информации в моей production.log
.)
ruby -v # => ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux]
rails -v # => Rails 4.2.1
mysql # => Server version: 5.1.73 Source distribution
эй вы проверяете значение по умолчанию для столбца2? это может быть «правда». –
@VishalJAIN Действительный вопрос, но нет. Сейчас я обновлю вопрос, чтобы подумать. – Sam
использовать beebug gem и использовать, чтобы увидеть все обратные линии и любезно положить его здесь –