自定义类

时间:2016-11-18 12:07:11

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

我的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,但它不起作用,导致未定义的方法`config_accessor&#39;错误。

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

2 个答案:

答案 0 :(得分:4)

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

import PlaygroundSupport PlaygroundPage.current.needsIndefiniteExecution = true 仅在请求上下文中有意义(读取:从控制器操作中调用时)。您无法从随机对象重定向,因为他们不知道要操作的请求。

是的,@安德里·德内科说的话。

答案 1 :(得分:4)

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