问题标签 [ruby-on-rails-5.2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1478 浏览

ruby-on-rails - Rails 5.2:form_with 对 AJAX 请求需要“local:false”吗?

我刚刚从 Rails 5.1 升级到 5.2。我对一个已经投入生产几个月没有问题的应用程序有很好的测试覆盖率。

我已经使用form_withRails 5.1 几个月了。默认情况下form_with,所有表单默认都是 AJAX 并且必须指定local: true才能有正常的 HTTP POST 请求。

在升级到 Rails 5.2 之后(我遵循了升级指南),我遇到了一些表单不再作为 AJAX 请求提交的情况,除非我特别添加local: false它们。

滚动到代码片段的末尾以查看local: false有效的附加功能。代码直接从应用程序中获取,无需更改。

当我提交没有声明的表格时local: false,我得到:

同样,我所做的唯一更改是手动添加local: false到表单以强制它远程。

文档说这local: false默认的,所以我不应该手动指定它。

我在这里想念什么?

请注意,AJAX 链接remote: true工作得很好;只有默认情况下不提交 AJAX 的表单。

更新

做一些挖掘,当我升级到 5.1 时,它看起来可能是一个问题。我找不到该config/initializers/new_framework_defaults_5_1.rb文件,并且将默认标志设置form_with为远程。由于当我升级到 5.2 时该文件不存在,所以它没有拉出那些新的默认配置。如果我确认确实是问题所在,我会更新这个问题。

更新 2

是的,确认问题是我没有config/new_framework_defaults_5_1.rb复制这些配置值的文件。

0 投票
0 回答
3455 浏览

ruby-on-rails - Rails 5.2:使用非属性参数调用的危险查询方法(其参数用作原始 SQL 的方法)

我有一个看起来像这样的模型的范围:

升级到 Rails 5.2 后,它会收到大量弃用警告,例如:

使用非属性参数调用的危险查询方法(其参数用作原始 SQL 的方法):“position((',' || id::text || ',') in ',')”。Rails 6.0 将不允许使用非属性参数。不应使用用户提供的值(例如请求参数或模型属性)调用此方法。可以通过将已知安全值包装在 Arel.sql() 中来传递它们。

如何更改该范围以使用 Rails 5.2 打球?

0 投票
2 回答
1545 浏览

ruby-on-rails - ActiveRecord::ConcurrentMigrationError:使用 mysql2 和 rails 5.2

从 4.2 升级到 rails 5.2 后,任何迁移都会抛出:

ActiveRecord::ConcurrentMigrationError:无法运行迁移,因为当前正在运行另一个迁移进程。

数据库适配器是mysql2

最初我认为这是因为我在开发环境中导入的现有生产数据库中的一些陈旧数据。但是同样的问题也发生在一个干净创建的数据库上。

为了克服它(因为我真的需要在其他一些问题上取得进展),我不得不在实际的 rails 代码中禁用咨询锁检查。

0 投票
4 回答
710 浏览

ruby-on-rails - Rails 5项目没有activerecord导致模型生成错误

我在使用没有 ActiveRecord 的 Rails 5.2 的项目中遇到问题。

我已经运行了命令rails new project --skip-active-record并且没问题,但是当我运行命令来生成模型时,我得到了这个错误:

.rvm/gems/ruby-2.5.1/gems/bundler-1.16.1/lib/bundler/rubygems_integration.rb:404:in `block (2 levels) in replace_gem':加载 'sqlite3' Active Record 适配器时出错。缺少它所依赖的宝石?sqlite3 不是捆绑包的一部分。将其添加到您的 Gemfile。(宝石::加载错误)

如果我禁用它并且我在互联网上搜索并且没有找到任何人在谈论它,我不明白为什么它会询问活动记录中的 sqlite 3。

怎么了?

谢谢

0 投票
1 回答
1176 浏览

ruby-on-rails - ActiveStorage:附加记录退货?确实如此,但 blob 为零。如何删除“幽灵”附件?这怎么发生的?

这是在生产应用程序中。我怀疑在文件上传(直接上传到 S3)期间发生了一些事情,并且 blob 没有正确创建。

现在应用程序在某些情况下会崩溃,我正在尝试删除“幽灵”附件而不删除父记录。这可能吗?

0 投票
1 回答
479 浏览

ruby-on-rails - 升级到 Rails 5.2.0,但没有创建 storage.yml

我按照本教程将现有应用程序升级到 rails 5.2.0。在我的 gem-file 中包含 rails 5.2.0 并在本地安装它之后,以及在 bundle update 和 bundle install and running 之后

然后rake db:migrate

我在我的应用程序中看不到 storage.yml 文件。

有没有其他人经历过这个?

0 投票
0 回答
308 浏览

credentials - Rails 5.2 凭据抛出错误

我正在使用Rails 5.2.0Ruby 2.5.1p57

我已经在我的 Rails 应用程序中引入了 Rails ActiveStorage。如果我直接使用 AWS 密钥,我可以向 S3 上传/下载文件。

当我在命令下运行时

EDITOR="subl --wait" rails credentials:edit

1:来自/home/nishant/.rvm/gems/ruby-2.5.1@creative_automation/gems/activesupport-5.2.0/lib/active_support/message_encryptor.rb:157:in decrypt_and_verify' /home/nishant/.rvm/gems/ruby-2.5.1@creative_automation/gems/activesupport-5.2.0/lib/active_support/message_encryptor.rb:190:in_decrypt':ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)

这不是我的 ubuntu 系统或 gemset 特定问题,因为我在其他机器上尝试过同样的事情,但它仍然无法正常工作。

提前致谢。

0 投票
1 回答
596 浏览

amazon-s3 - 无法使用 [Rails.env] 访问 :development 或 :production 凭据

我正在将应用程序升级到 Rails 5.2.0 并尝试创建credentials.yml.enc文件,以便我可以访问不同的:aws存储桶:development:production环境。

我正在关注本教程

我的凭据.yml.enc

在控制台中,如果我输入,Rails.application.credentials[:aws][:access_key_id]那么我会得到预期的输出:long_hexidecimal_string

但是当我输入Rails.application.credentials[Rails.env][:aws][:access_key_id]我得到这个错误:NoMethodError: undefined method []' for nil:NilClass

测试以查看问题是否在 yml 文件中,我尝试了这个并得到了预期的结果:

我认为问题是[Rails.env]产量["development"],而不是[:development]。有没有一种简单的方法来符号化[Rails.env]输出?我希望,[Rails.env.symbolize!]但这不起作用。

0 投票
1 回答
2340 浏览

rails-activestorage - Rails 5.2 Active Storage 清除/删除附件不会删除 Blob 或附件记录

我正在使用 rails 5.2,并且正在尝试使用 Amazon S3 设置 Active Storage。我的应用程序可以完全访问 S3,并且可以将avatar图像附加到user. 但是当我尝试删除头像时,我遇到了以下问题:

然后,当我检查存储桶时,该文件实际上已被删除,但在数据库中查找,两者都存在Blob,并且Attachment记录仍然存在。

任何想法为什么会发生这种情况?

编辑 我根据接受的答案的建议对我的 IAM 权限进行了一些更新。这些是我更新的项目:

  • 将策略附加到我的 IAM 用户,而不是我的 s3 存储桶。
  • 列出了所有必需的操作。
  • 在资源字段中添加整个存储桶,而不仅仅是所有对象。

最后我的策略 json 看起来像这样:

0 投票
2 回答
3941 浏览

ruby-on-rails - 活动存储:表单重新显示时保留/缓存上传文件的最佳实践

使用 Active Storage 上传文件时,当文件完成上传并重新显示表单时,例如当该表单的验证由于某种原因失败时,文件就消失了。

有没有办法在表单重新显示之间缓存或保留它?Shrine 为此目的提供了一个不错的插件,我正在为 Active Storage 寻找类似的东西。