Skip to content

Instantly share code, notes, and snippets.

@deependersingla
Created August 9, 2014 08:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save deependersingla/99d2fee6a3c7c73ff793 to your computer and use it in GitHub Desktop.
Save deependersingla/99d2fee6a3c7c73ff793 to your computer and use it in GitHub Desktop.
Monkey patch to replace model_attributes to model in rails strong para,s
class ActionController::Parameters
def permit(*filters)
params = self.class.new
filters.each do |filter|
case filter
when Symbol, String
permitted_scalar_filter(params, filter)
when Hash then
#filter[(filter.keys.first.to_s + "_attributes").to_sym] = filter.delete filter.keys.first
hash = hash_filter(params, filter)
params[params.keys.last + "_attributes"] = params.delete params.keys.last unless hash.blank?
end
end
unpermitted_parameters!(params) if self.class.action_on_unpermitted_parameters
params.permit!
end
private
def unpermitted_parameters!(params)
return unless self.class.action_on_unpermitted_parameters
unpermitted_keys = unpermitted_keys(params)
if unpermitted_keys.any?
case self.class.action_on_unpermitted_parameters
when :log
name = "unpermitted_parameters.action_controller"
ActiveSupport::Notifications.instrument(name, :keys => unpermitted_keys)
when :raise
raise ActionController::UnpermittedParameters.new(unpermitted_keys)
end
end
end
def unpermitted_keys(params)
keys = params.keys.map do |d|
if d.include?("_attributes")
d.gsub("_attributes",'')
else
d
end
end
self.keys - keys - NEVER_UNPERMITTED_PARAMS
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment