2

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

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。

4

2 回答 2

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

这也应该有效

于 2013-05-22T17:23:00.253 回答
0

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

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

于 2013-05-23T10:30:55.977 回答