module ScopedAssociations::ActiveRecord4::HasMany
Public Class Methods
new(model, name, scope, options)
click to toggle source
Calls superclass method
# File lib/scoped_associations/activerecord4/has_many.rb, line 15 def initialize(model, name, scope, options) super if scoped? search_scope = foreign_scope(model) proc_scope = proc { where(search_scope => name) } if @scope.nil? @scope = proc { instance_eval(&proc_scope) } else old_scope = @scope @scope = proc { instance_eval(&proc_scope) .instance_eval(&old_scope) } end end end
Public Instance Methods
build(attributes = {})
click to toggle source
Calls superclass method
# File lib/scoped_associations/activerecord4/has_many.rb, line 9 def build(attributes = {}) reflection = ActiveRecord::VERSION::MINOR == 0 ? super() : super(attributes) extend_reflection(reflection) reflection end
foreign_scope(model)
click to toggle source
# File lib/scoped_associations/activerecord4/has_many.rb, line 30 def foreign_scope(model) if options[:as] "#{options[:as]}_scope" else model.name.demodulize.underscore + "_scope" end end
valid_options()
click to toggle source
Calls superclass method
# File lib/scoped_associations/activerecord4/has_many.rb, line 5 def valid_options super + [:scoped] end
Private Instance Methods
extend_reflection(reflection)
click to toggle source
# File lib/scoped_associations/activerecord4/has_many.rb, line 40 def extend_reflection(reflection) if scoped? reflection.extend ReflectionExtension end end
scoped?()
click to toggle source
# File lib/scoped_associations/activerecord4/has_many.rb, line 46 def scoped? options[:scoped] end