【发布时间】:2019-09-06 13:48:59
【问题描述】:
我刚刚开始学习 Rails,但遇到了一个问题:
我正在开发一个简单的 RoR 应用程序,它有一个文本表单和一个使用活动存储的图像上传,它在提交时创建一个(发布)并激活一个活动作业,该作业在后台创建一个 MySql 转储并将其存储到一个目录中。
我的问题是,当我删除(发布)时,除了生成的 dump.sql 之外,所有内容都被删除。所以我希望能够单击删除并删除与我的帖子相关的所有内容,包括转储。所以我想我必须以某种方式将这个通过活动作业在后台生成的新 dump.sql 文件与我的帖子相关联。
这是我调用活动作业的控制器创建操作。
def create
@post = Post.new(post_params)
if @post.save
redirect_to home_path
DumpSaveJob.perform_later
else
render 'new'
end
end
这是在后台生成 Dump 的活动作业:
class DumpSaveJob < ApplicationJob
queue_as :default
def perform(*args)
`/usr/local/mysql/bin/mysqldump -u root mypassword dump_app_development > storage/dumps/dump-$(date +%Y-%m-%d-%H-%M-%S).sql`
end
end
这里是销毁控制器动作:
def destroy
@post = Post.find(params[:id])
@post.destroy
redirect_to home_path
end
我希望 Rails 直接将活动作业转储文件与我的控制器操作(具体销毁)相关联,因为该作业是从控制器中的创建操作中调用的。
【问题讨论】:
标签: ruby-on-rails rails-activejob