我的数据模型包含可能有附件的会议。我的update_meeting api包含以下行(除其他行外):
attachment = Attachment.new(image: params[:attachment], user: current_user)
begin
attachment.save!
@meeting.attachments << attachment
NotificationManager.add_attachment_to_meeting(current_user, @meeting, attachment)
rescue
puts "Error occured trying to upload attachment: #{attachment.inspect}, #{attachment.errors.inspect}"
end
我们遇到了一个特殊的情况,即创建了一个附件,但它与数据库中的会议没有关联。我开始在原木上挖掘以找出发生了什么事。我看不到任何错误、异常、回滚等等。尤其是这三条线:
(0.7ms) BEGIN
SQL (1.0ms) UPDATE "attachments" SET "updated_at" = $1, "meeting_id" = $2 WHERE "attachments"."id" = $3 [["updated_at", 2018-07-06 13:57:52 UTC], ["meeting_id", 434], ["id", 51]]
(1.3ms) COMMIT
我的假设(在看到这个之前)是,如果有一个update语句后面跟着一个commit,而没有回滚或错误消息,或者日志中的任何内容,那么它应该成功。但显然不是。
有人指出哪里出了问题吗?我完全不知道从哪里开始找。不知道如何重现,不知道要添加哪些日志消息以使下次发生时更轻松,不确定…
我使用的是运行在ec2上的rails 5和postgresql。