保存时对象不会更新

时间:2013-05-22 17:17:51

标签: ruby-on-rails activerecord

我可能遗漏了一些明显的东西,但是当我尝试保存对象时,它不会在数据库中更新。我可以插入对象。这是我的模特。我可以在用户模型上正确地完成所有操作,我只是遇到了争议模型的问题。

class Dispute < ActiveRecord::Base
  attr_accessible :reason
  belongs_to :user
end

class User < ActiveRecord::Base
  attr_accessible :name, :email
  has_many :disputes
end
然后我试着......

d = Dispute.new
d.save  # This works, it is inserted correctly
  BEGIN
  INSERT
  COMMIT
d.reason = "This is a reason"
d.save  # This doesn't work
  BEGIN
  COMMIT
d.reason = "This is a different reason"
d.changed?
  true
d.save
  BEGIN
  COMMIT

不确定我错过了什么。我确实简化了一下。我在这个项目中有很多其他对象,它们都可以正常工作。

d.update_attributes( :reason => "This is a reason" )

这也表现得相同,它不会更新数据库中的记录,但它返回true。

2 个答案:

答案 0 :(得分:0)

您是否检查.valid?是否因验证而失败?

争议属于用户,其中有许多争议。 您应该以一种始终与用户帐户关联的方式创建争议。

你可以试试这个:

 u = User.first
 d = Dispute.new
 d.user = u
 d.save
 d.reason = "something"
 d.save
 d.persisted?
 d.valid?

然后你可以反过来试试:

 u = User.first
 u.disputes.create(:reason => "something else")
 u.save

这也应该有用

答案 1 :(得分:0)

一般情况/将来参考:如果查看Dev服务器上的服务器日志,您将能够看到d.save失败的确切原因。只需在控制台中向上滚动,直到您看到尝试的CRUD操作失败。失败的原因应该在那里说明。

如果您仍然遇到问题,可以发布日志中的输出吗?