gpt4 book ai didi

ruby-on-rails - Rails ActiveRecord shovel operator (<<) Update doesn't succeed without exception in the log 日志中没有异常

转载 作者:行者123 更新时间:2023-11-29 12:08:03 31 4
gpt4 key购买 nike

我的数据模型包含可能包含附件的 session 。我的 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

我们遇到了一个特殊情况,即创建了附件但未与数据库中的 session 相关联。我开始深入研究日志以了解发生了什么。我看不到任何错误、异常、回滚之类的东西。特别是这 3 行:

(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 而没有 ROLLBACK 或错误消息或日志中的任何内容,它应该已经成功。但显然不是。

有没有人指出这可能出错的地方?我完全不知道从哪里开始寻找。不确定如何重现,不确定要添加哪些日志消息以使其在下次发生时更容易,不确定...

我正在使用在 EC2 上运行的 Rails 5 和 PostgreSQL。

最佳答案

让 session 创建附件

begin
attachment = @meeting.attachments.create(image: params[:attachment], user: current_user)
NotificationManager.add_attachment_to_meeting(current_user, @meeting, attachment)
rescue
puts "Error occured trying to upload attachment: #{attachment.inspect}, #{attachment.errors.inspect}"
end

session 应该像附件的“聚合器”。附件不应该存在,或者至少,没有意义,因为它们在没有 session 的情况下存在,所以它们应该通过 session 创建

关于ruby-on-rails - Rails ActiveRecord shovel operator (<<) Update doesn't succeed without exception in the log 日志中没有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51299431/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com