Rails redirect_to 内部自定义 class

Rails redirect_to inside custom class

我的 Rails 应用程序中有一个自定义 Class,它验证了一系列设置。

代码:

class UserSettingObject < RailsSettings::SettingObject
  validate do
    if !/^([0-9]|0[0-9]|1[0]):[0-5][0-9]$/.match(self.time)
      redirect_to settings_path, notice: 'Invalid time format'
    end
  end
end

我查看了SO帖子,发现了一个类似的问题(here),推荐的是include ActionController::Redirecting但是不行,导致undefined method `config_accessor'错误。

如何在自定义 Class 中使用 Rails 重定向方法?

简短的回答是:你不能那样做。

redirect_to 仅在请求上下文中有意义(阅读:从控制器操作中调用时)。您无法从随机对象重定向,因为它们不知道要操纵什么请求。

是的,@AndreyDeineko 说的。

除了@SergioTulentsev 已经说过的,验证是为了验证,而不是为了采取行动。您可以做的是将正则表达式保留为一种方法,并在控制器中使用它检查 time 并根据验证结果进行重定向。