Rails更新提交到数据库但保存没有

时间:2014-04-01 16:26:06

标签: ruby-on-rails ruby-on-rails-4

我有一个方法作为模型的一部分,它改变了一些属性并将它们提交到数据库。最初,我有

不保存到DB:

def accept
    status = Offer.ACCEPTED
    status_date = Time.now
    puts valid?  #true
    save!
end

这实际上并没有起作用。当我在控制台中运行它时,我得到了

(0.1ms)  BEGIN
(0.1ms)  COMMIT

然而,当我改为update电话时,一切都运行得很漂亮......

保存到DB:

def accept
    update({ status: Offer.ACCEPTED, status_date: Time.now })
end

我最近一直在调整验证,因此可能与它有关但我一直在关注.valid?值并且它始终是真的。我在这里误解了什么?为什么没有保存数据?

1 个答案:

答案 0 :(得分:2)

问题是你没有在编写器方法中使用self。 Ruby需要编写器方法的显式接收器,否则它假定您尝试在代码中的某处分配变量。这种方法将解决您的问题:

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

我希望它有所帮助!