Module: AttrInitializable::ClassMethods

Defined in:
lib/attr_initializable.rb

Instance Method Summary collapse

Instance Method Details

#attr_initializable(attributes, options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/attr_initializable.rb', line 5

def attr_initializable(attributes, options = {})
  unless respond_to?(:protected_attributes)
    raise RuntimeError.new('`attr_initializable` relies on `attr_accessible`. ' \
       'Please add `protected_attributes` to your Gemfile to use `attr_initializable`.')
  end

  unless ActiveRecord::Base.respond_to?('_mass_assignment_sanitizer') &&
    ActiveRecord::Base.send('_mass_assignment_sanitizer').is_a?(ActiveModel::MassAssignmentSecurity::StrictSanitizer)
    puts "WARNING: Running with strict mass assignment sanitizer is recommended.\n" \
      "Please add config.active_record.mass_assignment_sanitizer = :strict to config/application.rb.\n"
  end

  role = options.delete(:as) || :default
  initializable_attributes[role] ||= []
  initializable_attributes[role] += Array(attributes)
end

#initializable_attributesObject



22
23
24
# File 'lib/attr_initializable.rb', line 22

def initializable_attributes
  @@initializable_attributes ||= {}
end