我有一个对象,其结束日期是使用回调after_create
创建的。
我想知道最好的位置是包含在对象到期时触发动作的逻辑。 (Time.now.in_time_zone > Object.end_date)
我想创建一个方法来检查对象是否具有属性repeat
为true或false。如果是,并且当前日期是对象的结束日期,则应该在对象的结束日期添加7天。
我有一个方法来检查对象是否仍然有效,但它是一个布尔值,我在视图中多次使用它,所以如果我在那里包含它,它会在视图更新之前多次执行并且我最终在结束日期添加太多天。
是否有可能在您的视图文件中有一个操作,如果页面在特定条件下加载时会自动调用该操作?我猜这是不好的做法,因为我读过一些关于在视图文件中避免过多逻辑的文章。
我确信有很多方法可以做到这一点,所以请你告诉我你用什么方法来解决这个问题?
如果您需要更多信息,请与我们联系。
答案 0 :(得分:0)
您可以考虑使用控制器 before_action ,如您在页面加载前提到的那样调用它。
的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仅显示操作