这适用于票务系统。
关闭故障单时,会有一列resolution
。用户键入分辨率,即“此票证由xyz解析”。该列的类型为textfield,而不是字符串。所以你去关闭它并键入某种分辨率。但删除故障单时,该字段不会“更新”。
摘要:销毁故障单时更新故障单模型上的分辨率列。推理:必须将解决方案传递给电子邮件(通过Sendgrid)和SMS(通过Twilio)。目前,它将传递分辨率的默认值(无论创建故障单时该值是什么)。
在初始故障单创建表单中,我将resolution
作为隐藏字段,如下所示:
<%= f.hidden_field :resolution, :value => "No Resolution Provided" %>
我尝试了什么:
在ticket.rb
模型中:
before_destroy { self.update_attribute(:resolution, "a hardcoded value here") }
确保有效,但不是从表单中读取,只是一个硬编码的值。纠正我,如果我错了,但我想要做的事情应该在控制器中完成,对吗?
我尝试了before_action
,但没有取得多大成功。与before_action
:
def update_resolution
@ticket = Ticket.find(params[:id])
@ticket_res = @ticket.resolution
@ticket_res.update_attribute(params[:resolution])
end
以上创建了一个重定向循环。
最好的方法是什么?任何和所有输入都表示赞赏。
答案 0 :(得分:1)
在删除它之前更新记录只是为了其他一些实际上不需要记录工作的功能,这听起来不是一种很好的工作方式。
这个工作流对我来说更有意义:
您应该阅读有关后台作业的Rails指南:http://guides.rubyonrails.org/active_job_basics.html
虽然不是最快的后台工作系统,延迟工作将是最容易上手的 - https://github.com/collectiveidea/delayed_job