You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
glitchier-soc/app/models/form/domain_block_batch.rb

36 lines
822 B

# frozen_string_literal: true
class Form::DomainBlockBatch
include ActiveModel::Model
include Authorization
include AccountableConcern
attr_accessor :domain_blocks_attributes, :action, :current_account
def save
case action
when 'save'
save!
end
end
private
def domain_blocks
@domain_blocks ||= domain_blocks_attributes.values.filter_map do |attributes|
DomainBlock.new(attributes.without('enabled')) if ActiveModel::Type::Boolean.new.cast(attributes['enabled'])
end
end
def save!
domain_blocks.each do |domain_block|
authorize(domain_block, :create?)
next if DomainBlock.rule_for(domain_block.domain).present?
domain_block.save!
DomainBlockWorker.perform_async(domain_block.id)
log_action :create, domain_block
end
end
end