小编907*_*7th的帖子

如何仅在不存在的情况下创建记录,避免重复并且不会引发任何错误?

众所周知,Model.find_or_create_by(X)实际上:

  1. 由X选择
  2. 如果找不到 - >由X创建
  3. 返回记录(找到或创建)

在步骤1和2之间可能存在争用条件.为了避免数据库中的X重复,应该在X的字段集上使用唯一索引.但是如果应用唯一索引,那么竞争事务之一将失败异常(尝试创建X的副本时).

如何实现"安全版本",#find_or_create_by它永远不会引发任何异常并始终按预期工作?

postgresql transactions ruby-on-rails upsert rails-activerecord

8
推荐指数
1
解决办法
5834
查看次数

aws:SourceAccount 和 aws:SourceOwner AWS SNS 访问策略语句有什么区别

AWS 文档提供了不同 SNS 访问控制配置的示例。

类似的配置示例还有两个:

一个允许将通知从另一个帐户的 S3 存储桶发布到 SNS 主题:

{
  "Effect": "Allow",
   "Principal": { 
    "Service": "s3.amazonaws.com" 
  },
  "Action": "sns:Publish",
  "Resource": "arn:aws:sns:us-east-2:111122223333:MyTopic",
  "Condition": {
    "StringEquals": {
      "AWS:SourceAccount": "444455556666"
    }       
  }
}
Run Code Online (Sandbox Code Playgroud)

第二允许将来自另一个帐户的 SES 电子邮件的通知发布到 SNS 主题:

{
  "Effect": "Allow",
  "Principal": {
    "Service": "ses.amazonaws.com"
  },
  "Action": "SNS:Publish",
  "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
  "Condition": {
    "StringEquals": {
      "aws:SourceOwner": "111122223333"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

区别在于第一个示例使用aws:SourceAccount,第二个示例使用aws:SourceOwner

该文档有一个专门的段落,名为“ aws:SourceAccount 与 aws:SourceOwner ”,但我仍然不清楚这两个语句之间的区别。

aws:SourceAccount您能澄清一下政策声明和政策声明之间的区别吗aws:SourceOwner

amazon-s3 amazon-web-services amazon-sns amazon-ses aws-access-policy

7
推荐指数
1
解决办法
1万
查看次数

ActiveRecord 事务和线程安全

我的问题是关于 AR 交易功能。它是线程安全的吗?

两者同时使用是否安全

ActiveRecord::Base.transaction do ...
Run Code Online (Sandbox Code Playgroud)

Account.transaction do ...
Run Code Online (Sandbox Code Playgroud)

声明?

我计划使用 Puma 作为 Web 服务器,并使用 Sidekiq 进行后台处理。有什么我应该知道的技巧吗?

谢谢!

transactions ruby-on-rails thread-safety rails-activerecord

5
推荐指数
0
解决办法
1540
查看次数

如何在 rails 开发服务器中禁止请求记录到 STDOUT?

更准确地说,我希望所有logger.info/debug/etc消息仅显示在 *.log 文件中,而不显示在控制台窗口中。谢谢。

UPD:
我不想抑制所有的控制台输出,例如我想使用lettersgem 将我自己的输出放到控制台,我也想使用debugger哪个不能与stdout重定向到/dev/null. 我只希望 Rails 不Rails.loggerstdout(请求、ActiveRecordSQL 查询等)输出消息,实际上我可以在需要时在日志文件中看到此类消息。

logging ruby-on-rails

0
推荐指数
1
解决办法
2308
查看次数

浏览器如何区分ES5和ES6脚本?

ES5和ES6之间的行为差​​异要小得多.这些差异可能会导致在使用现代浏览器(支持ES6)进行解释时在ES5中编写的脚本出错.这个问题如何解决?

javascript cross-browser ecmascript-5 ecmascript-harmony ecmascript-6

0
推荐指数
1
解决办法
307
查看次数