Class: ActiveModel::MassAssignmentSecurity::WhiteListBlock

Inherits:
PermissionSet
  • Object
show all
Defined in:
lib/attr_accessible_block.rb

Constant Summary collapse

@@variables =
{}
@@always_accessible =
nil

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(blocks) ⇒ WhiteListBlock

Returns a new instance of WhiteListBlock.



61
62
63
64
# File 'lib/attr_accessible_block.rb', line 61

def initialize(blocks)
  @blocks = blocks
  super
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



33
34
35
# File 'lib/attr_accessible_block.rb', line 33

def attributes
  @attributes
end

#recordObject (readonly)

Returns the value of attribute record.



33
34
35
# File 'lib/attr_accessible_block.rb', line 33

def record
  @record
end

Class Method Details

.add_variable(name, &block) ⇒ Object



70
71
72
73
# File 'lib/attr_accessible_block.rb', line 70

def self.add_variable(name, &block)
  @@variables[name] = block
  attr_reader name
end

.always_accessible(&block) ⇒ Object



75
76
77
# File 'lib/attr_accessible_block.rb', line 75

def self.always_accessible(&block)
  @@always_accessible = block
end

Instance Method Details

#add(attributes) ⇒ Object



66
67
68
# File 'lib/attr_accessible_block.rb', line 66

def add(attributes)
  Array.wrap(attributes).map(&:to_s).each { |attribute| super(attribute) }
end

#sanitize(attributes, record) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/attr_accessible_block.rb', line 38

def sanitize(attributes, record)
  @attributes = attributes

  @@variables.each do |name, func|
    instance_variable_set("@#{name}", func.call)
  end

  @record = record

  always_accessible = (@@always_accessible ? instance_eval(&@@always_accessible) : false)

  unless always_accessible
    @blocks.each do |block|
      instance_eval(&block)
    end

    flatten!
    reject_attributes!
  end

  @attributes
end