Ruby on rails 如何在开发模式下访问加密凭据?
我在控制器里有这个代码Ruby on rails 如何在开发模式下访问加密凭据?,ruby-on-rails,ruby-on-rails-5.2,Ruby On Rails,Ruby On Rails 5.2,我在控制器里有这个代码 def索引 将Rails.application.credentials.admin_放入电子邮件 if(current_admin&¤t_admin.email==Rails.application.credentials.admin_email) #这样做 其他的 #那样做 结束 结束 else分支总是发生。我相信这是因为我没有从加密文件中取回字符串,因为puts行从不打印任何内容 当我在Rails控制台中键入Rails.application.cred
def索引
将Rails.application.credentials.admin_放入电子邮件
if(current_admin&¤t_admin.email==Rails.application.credentials.admin_email)
#这样做
其他的
#那样做
结束
结束
else分支总是发生。我相信这是因为我没有从加密文件中取回字符串,因为puts行从不打印任何内容
当我在Rails控制台中键入
Rails.application.credentials.admin\u email
时,我得到了正确的响应,”xxx@xxx.com“
我的config/credentials.yml.enc
文件如下所示:
admin_email: xxx@xxx.com
我还尝试将config/credentials.yml.enc
文件更改为:
development:
admin_email: xxx@xxx.com
并将代码更改为
放置Rails.application.credentials[:admin\u email]
if(current_admin&¤t_admin.email==Rails.application.credentials[:admin_email]
然后在rails控制台中,我得到了正确的xxx@xxx.com
使用
Rails.application.credentials[:development][:admin\u email]
,但在运行
rails s
时,开发代码中仍然没有显示任何内容。这是获取特定于环境的凭据的正确方法,这就是您使用以下代码获取凭据的原因:-
Rails.application.credentials.admin_email
更多信息请点击这里
或
看起来您可能有打字/复制粘贴错误 如果您仍有此格式的凭据文件:
development:
admin_email: xxx@xxx.com
那么你应该使用
Rails.application.credentials.development[:admin_email]
在您的问题中,尽管在“并已将代码更改为”下,您仍然拥有旧版本:
puts Rails.application.credentials[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials[:admin_email]
这应该是:
puts Rails.application.credentials.development[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials.development[:admin_email]
我在代码中使用的是Rails.application.credentials.admin_电子邮件。puts方法不打印任何内容。在Rails控制台中使用此方法会打印正确的令牌。@flobacca是的。谢谢!