- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
def self.process(site, object = nil, &block)
dont_unblock = false
block_res = true
site.lock!
if site.assets_blocked?
dont_unblock = true
raise Asset::BlockedException
end
site.assets_blocked = true
site.save!
block_res = yield if block_given?
return false unless block_res
return object.save if object
true
ensure
site.update_attribute(:assets_blocked, false) unless dont_unblock
end
# во всех местах, где с ассетами делалось хоть что-нибудь, копипастился такой кусок:
result =
begin
@asset = @site.assets.new
@asset.process do
@asset.attached = params[:file]
@asset.folder_path = params[:path]
end
rescue Asset::BlockedException
render json: { errors: [I18n.t("layout.assets.errors.assets_blocked")] } and return
end
По мотивам http://govnokod.ru/13027: транзакции изобретены не нами, давайте сделаем их сами!
guest 21.05.2013 11:37 # −9
AHaHkacmHbIu_nemyx 25.08.2021 17:53 # 0