我正在将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不包含任何用户输入。为什么此命令被认为是不安全的?这是预期的行为,还是我在这里遗漏了任何东西?
我在用
主动存储(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
如何在文本编辑器中打开rails“credentials.yml.enc”文件以将我的凭据存储在rails 5.2中的该文件中?