我在我们的网络应用中实施了公共现场演示功能。
由于这是一个公开演示,我们不希望任何数据库更改生效(以防止滥用),而是他们只是成功运行但没有触及数据库。
类似的东西:
class PostsController < ApplicationController
def update
disable_save_operations if @current_account.live_demo?
@post = Post.find params[:id]
@post.update_attributes params[:post]
end
end
理想情况下,我希望保留相同的功能,但要静默删除任何UPDATE,DELETE或INSERT查询,而不是实际处理它们。
我该怎么办?
答案 0 :(得分:0)
这是未经测试的,但我相信你想做的事情可以这样做。
def rollback_if_demo(&block)
ActiveRecord::Base.transaction do
yield
raise ActiveRecord::Rollback if @current_account.live_demo?
end
end
然后就这样称呼它
rollback_if_demo do
@post = Post.find params[:id]
@post.update_attributes params[:post]
end