Class: ActiveRecord::Associations::Builder::CollectionAssociation

Inherits:
Association
  • Object
show all
Defined in:
lib/active_record/associations/builder/collection_association.rb

Overview

:nodoc:

Direct Known Subclasses

HasAndBelongsToMany, HasMany

Constant Summary collapse

CALLBACKS =
[:before_add, :after_add, :before_remove, :after_remove]

Instance Attribute Summary collapse

Attributes inherited from Association

#model, #name, #options, #reflection

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Association

#mixin

Constructor Details

#initialize(model, name, options, &extension) ⇒ CollectionAssociation

Returns a new instance of CollectionAssociation.



18
19
20
21
# File 'lib/active_record/associations/builder/collection_association.rb', line 18

def initialize(model, name, options, &extension)
  super(model, name, options)
  @block_extension = extension
end

Instance Attribute Details

#block_extensionObject (readonly)

Returns the value of attribute block_extension.



12
13
14
# File 'lib/active_record/associations/builder/collection_association.rb', line 12

def block_extension
  @block_extension
end

Class Method Details

.build(model, name, options, &extension) ⇒ Object



14
15
16
# File 'lib/active_record/associations/builder/collection_association.rb', line 14

def self.build(model, name, options, &extension)
  new(model, name, options, &extension).build
end

Instance Method Details

#buildObject



23
24
25
26
27
28
29
# File 'lib/active_record/associations/builder/collection_association.rb', line 23

def build
  show_deprecation_warnings
  wrap_block_extension
  reflection = super
  CALLBACKS.each { |callback_name| define_callback(callback_name) }
  reflection
end

#show_deprecation_warningsObject



35
36
37
38
39
40
41
# File 'lib/active_record/associations/builder/collection_association.rb', line 35

def show_deprecation_warnings
  [:finder_sql, :counter_sql].each do |name|
    if options.include? name
      ActiveSupport::Deprecation.warn("The :#{name} association option is deprecated. Please find an alternative (such as using scopes).")
    end
  end
end

#writable?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/active_record/associations/builder/collection_association.rb', line 31

def writable?
  true
end