小编Gom*_*thi的帖子

Rails 5.2.3上的危险查询方法弃用警告

我正在将Rails应用程序升级到5.2.3

我在我的应用程序中使用以下代码。

MyModel.order('LOWER(name) ASC')
Run Code Online (Sandbox Code Playgroud)

它将引发以下弃用警告:

DEPRECATION WARNING: Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s): "LOWER(name)". Non-attribute arguments will be disallowed in Rails 6.0. This method should not be called with user-provided values, such as request parameters or model attributes. Known-safe values can be passed by wrapping them in Arel.sql()
Run Code Online (Sandbox Code Playgroud)

我已根据弃用警告的建议更改了上述内容,并且该警告消失了:

MyModel.order(Arel.sql('LOWER(name) ASC'))
Run Code Online (Sandbox Code Playgroud)

我已经在这里浏览了有关的讨论。似乎引入了此更改是为了禁止SQL注入。

但是order子句LOWER(name) ASC不包含任何用户输入。为什么此命令被认为是不安全的?这是预期的行为,还是我在这里遗漏了任何东西?

sql-injection ruby-on-rails ruby-on-rails-5.2

5
推荐指数
1
解决办法
170
查看次数

无法在 Chrome 中预览音频/vnd.wave

我在用

主动存储(5.2.5)

.wav文件上传时,它在直接上传时将内容类型显示为“音频/wav”。使用mime magic gem 时,在active_storage_attachments创建后,它将内容类型更新为audio/x-wav。这个扩展文件预览chrome 中

但是在更改为marcel后,它将内容类型保存为'audio/vnd.wave'。调试时,active_storage / blob / identifiable更新内容类型。并且“audio/vnd.wave”未在 chrome 中预览,但 safari 允许预览。

因此,尝试在active_storage/blob/identifiable上评论与更新相关的行。它将内容类型保存为audio/x-wav并允许它在 Chrome 中预览。

尝试在application.rb 中添加配置

config.active_storage.content_types_allowed_inline += %w[音频/波形音频/vnd.wave 音频/wav 音频/x-wav 音频/x-pn-wav]

但无法在 chrome 中预览audio/vnd.wave扩展文件。

chrome 是否支持 audio/vnd.wave 扩展?

如果chrome支持,是否需要添加其他配置进行预览?

希望理解我的问题。请帮我找出问题所在。

google-chrome ruby-on-rails wav ruby-on-rails-5 rails-activestorage

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

在编辑器中打开 Ruby on Rails 凭证加密文件

如何在文本编辑器中打开rails“credentials.yml.enc”文件以将我的凭据存储在rails 5.2中的该文件中?

rubygems ruby-on-rails ruby-on-rails-5

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