class ActiveRecord::ActsAsRelation::ActsAs

Attributes

association_name[R]
class_name[R]
model[R]
module[RW]
module_name[R]
name[R]
options[R]
scope[R]

Public Class Methods

new(model_name, scope = nil, options = {}) click to toggle source
# File lib/active_record/acts_as_relation/acts_as.rb, line 7
def initialize(model_name, scope = nil, options = {})
  @model_name = model_name
  @options, @scope = scope.is_a?(Hash) ? [scope, nil] : [options, scope]

  @name             = @model_name.to_s.underscore.singularize.to_sym
  @class_name       = @options[:class_name] || @name.to_s.camelcase
  @model            = @class_name.constantize
  @association_name = @options[:as] || @model.acts_as_association_name
  @module_name      = "ActsAs#{name.to_s.camelcase}"
end

Public Instance Methods

has_one_options() click to toggle source
# File lib/active_record/acts_as_relation/acts_as.rb, line 22
def has_one_options
  @has_one_options ||= {
    as:         association_name,
    class_name: class_name,
    inverse_of: association_name.to_sym,
    autosave:   true,
    validate:   false,
    dependent:  options.fetch(:dependent, :destroy)
  }
end
parent_relations() click to toggle source
# File lib/active_record/acts_as_relation/acts_as.rb, line 18
def parent_relations
  @parent_relations ||= (model.reflect_on_all_associations.map(&:name) - [association_name]).map { |a| a.to_s + '_id' }
end