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

How to get variable in sorcery.rb at controller

我在 Rails 6 应用程序中使用魔法 gem。
我需要在控制器中使用 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

我怎样才能得到这个?

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

在配置文件夹中添加一个 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']

所以在你的情况下你可以这样做:

Rails.application.config.sorcery.configure do |config|
  config.user_config do |user|
    user.activation_token_expiration_period = APP_CONFIG['activation_token_expiration_period']
  end
end

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

如果您有 User 的实例,您可以这样做:

User.new.sorcery_config.activation_token_expiration_period