【问题标题】:Rails redirect_to inside custom classRails redirect_to 在自定义类中
【发布时间】:2023-04-10 08:35:01
【问题描述】:

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

代码:

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'错误。

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

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-5


    【解决方案1】:

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

    【讨论】:

    • @SergioTulentsev 我刚刚意识到,您实际上回答了一个问题,而我提出了一个替代方案,但这是行不通的:) 赞成
    【解决方案2】:

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

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

    是的,@AndreyDeineko 所说的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      相关资源
      最近更新 更多