Ruby on rails Rails更新提交到数据库,但不保存

Ruby on rails Rails更新提交到数据库,但不保存,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个方法作为模型的一部分,它可以更改一些属性并将它们提交到数据库。原来我有 不保存到数据库: 但这实际上并不起作用。当我在控制台中运行它时,我只需要 (0.1ms) BEGIN (0.1ms) COMMIT 然而,当我切换到一个update调用时,一切都运行得很好 是否保存到数据库: 我最近一直在调整验证,所以这可能与它有关,但我一直在观察.valid?值,它总是正确的。我在这里误解了什么?为什么不保存数据?问题是您没有在编写器方法中使用self。Ruby需要writer方法上的显式接

我有一个方法作为模型的一部分,它可以更改一些属性并将它们提交到数据库。原来我有

不保存到数据库: 但这实际上并不起作用。当我在控制台中运行它时,我只需要

(0.1ms)  BEGIN
(0.1ms)  COMMIT
然而,当我切换到一个
update
调用时,一切都运行得很好

是否保存到数据库:
我最近一直在调整验证,所以这可能与它有关,但我一直在观察
.valid?
值,它总是正确的。我在这里误解了什么?为什么不保存数据?

问题是您没有在编写器方法中使用
self
。Ruby需要writer方法上的显式接收器,否则它会假定您试图在代码中的某个地方分配一个变量。此方法将解决您的问题:

def accept
  self.status      = Offer.ACCEPTED
  self.status_date = Time.now
  save!
end

我希望有帮助

尝试将
更新
替换为
更新并查看它是否引发任何错误否,
更新不会出现任何错误
但是由于
update
已成功提交到数据库,我不希望
update会抛出任何东西<代码>保存
是一种既不提交到数据库也不抛出错误的方法。太棒了。这就是问题所在。非常感谢。
def accept
    update({ status: Offer.ACCEPTED, status_date: Time.now })
end
def accept
  self.status      = Offer.ACCEPTED
  self.status_date = Time.now
  save!
end