Sha256: 15f46b4a98fd6b3113ca13e3ffefa6ebadc4ea2ec7264125fe715cbc25603c58
Contents?: true
Size: 1.15 KB
Versions: 3
Compression:
Stored size: 1.15 KB
Contents
# encoding: UTF-8 require 'set' module MongoMapper module Plugins module Protected extend ActiveSupport::Concern included do class_attribute :protected_attributes end module ClassMethods def attr_protected(*attrs) raise AccessibleOrProtected.new(name) if try(:accessible_attributes?) self.protected_attributes = Set.new(attrs) + (protected_attributes || []) end def key(*args) key = super attr_protected key.name.to_sym if key.options[:protected] key end end module InstanceMethods def assign(attrs={}) super(filter_protected_attrs(attrs)) end def update_attributes(attrs={}) super(filter_protected_attrs(attrs)) end def update_attributes!(attrs={}) super(filter_protected_attrs(attrs)) end protected def filter_protected_attrs(attrs) return attrs if protected_attributes.blank? || attrs.blank? attrs.dup.delete_if { |key, val| protected_attributes.include?(key.to_sym) } end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mongo_mapper-0.10.0 | lib/mongo_mapper/plugins/protected.rb |
mongo_mapper-0.9.2 | lib/mongo_mapper/plugins/protected.rb |
mongo_mapper-0.9.1 | lib/mongo_mapper/plugins/protected.rb |