如何在控制器的sorcery.rb中获取变量

问题描述

我正在Rails 6应用程序中使用魔法宝石。
我需要在控制器的sorcery.rb中使用变量,但是我不知道如何获取该值。

Rails.application.config.sorcery.submodules = [:user_activation]
Rails.application.config.sorcery.configure do |config|
  config.user_config do |user|
    user.activation_token_expiration_period = 60 * 60 * 24 * 7 # <= this
  end
end

我怎么能得到这个?

解决方法

您可以将此令牌有效期限保留在配置文件中,并在需要的任何地方使用它。您可以通过多种方式设置配置(我的首选方式是):

在配置文件夹中添加一个pseudo文件:

config.yml

然后在defaults: &defaults activation_token_expiration_period: 60 * 60 * 24 * 7 development: <<: *defaults test: <<: *defaults production: <<: *defaults 文件中,您可以这样操作:

application.rb

然后在应用程序中的任何地方使用它,如下所示:

APP_CONFIG = YAML.load_file('config/config.yml')[Rails.env]

因此,您可以这样做:

APP_CONFIG['activation_token_expiration_period']

您可以以任何方式设置此配置(您可能已经在应用程序中进行了设置),主要建议是使用环境变量存储此值,并在需要时在应用程序中使用它。

,

如果您有User的实例,则可以通过以下方式做到这一点:

User.new.sorcery_config.activation_token_expiration_period