34 lines
965 B
Ruby
34 lines
965 B
Ruby
|
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
|
||
|
module HasAgentAllowedParams
|
||
|
extend ActiveSupport::Concern
|
||
|
|
||
|
class_methods do
|
||
|
def agent_allowed_params
|
||
|
agent_allowed_attributes + agent_allowed_nested_relations
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def agent_allowed_attributes
|
||
|
attrs = const_defined?(:AGENT_ALLOWED_ATTRIBUTES) ? const_get(:AGENT_ALLOWED_ATTRIBUTES) : []
|
||
|
|
||
|
[:id] + attrs
|
||
|
end
|
||
|
|
||
|
def agent_allowed_nested_relations
|
||
|
return [] if !const_defined?(:AGENT_ALLOWED_NESTED_RELATIONS)
|
||
|
|
||
|
const_get(:AGENT_ALLOWED_NESTED_RELATIONS).map do |relation_identifier|
|
||
|
key = "#{relation_identifier}_attributes".to_sym
|
||
|
value = reflect_on_association(relation_identifier).klass.agent_allowed_params
|
||
|
|
||
|
if reflect_on_association(relation_identifier).is_a? ActiveRecord::Reflection::HasManyReflection
|
||
|
value << :_destroy
|
||
|
end
|
||
|
|
||
|
{ key => value }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|