Ruby on Rails - 使用日期触发操作

时间:2018-01-08 16:44:11

标签: ruby-on-rails ruby activerecord

我有一个对象,其结束日期是使用回调after_create创建的。

我想知道最好的位置是包含在对象到期时触发动作的逻辑。 (Time.now.in_time_zone > Object.end_date)

我想创建一个方法来检查对象是否具有属性repeat为true或false。如果是,并且当前日期是对象的结束日期,则应该在对象的结束日期添加7天。

我有一个方法来检查对象是否仍然有效,但它是一个布尔值,我在视图中多次使用它,所以如果我在那里包含它,它会在视图更新之前多次执行并且我最终在结束日期添加太多天。

是否有可能在您的视图文件中有一个操作,如果页面在特定条件下加载时会自动调用该操作?我猜这是不好的做法,因为我读过一些关于在视图文件中避免过多逻辑的文章。

我确信有很多方法可以做到这一点,所以请你告诉我你用什么方法来解决这个问题?

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用控制器 before_action ,如您在页面加载前提到的那样调用它。

Scalor Maven Plugin

的Rails文档中修改示例
class MyObjectsController < ActionController::Base
  before_action :object_expire, only: [:show]

  private

  def object_expire
    # perform some logic here
    if @my_object.expired?
      @expired_result = @my_object.do_repeat
    end  
  end
end

编辑 - 限制before_action仅显示操作