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是的。谢谢!