我可能遗漏了一些明显的东西,但是当我尝试保存对象时,它不会在数据库中更新。我可以插入对象。这是我的模特。我可以在用户模型上正确地完成所有操作,我只是遇到了争议模型的问题。
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。
答案 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操作失败。失败的原因应该在那里说明。
如果您仍然遇到问题,可以发布日志中的输出吗?