class NinjaModel::Relation
Constants
- MULTI_VALUE_ATTRS
- SINGLE_VALUE_ATTRS
Attributes
default_scoped[RW]
default_scoped?[RW]
klass[R]
limit_value[RW]
loaded[R]
loaded?[R]
offset_value[RW]
ordering[RW]
predicates[RW]
readonly_value[RW]
Public Class Methods
new(klass)
click to toggle source
# File lib/ninja_model/relation.rb, line 22 def initialize(klass) @klass = klass @loaded = false @default_scoped = false SINGLE_VALUE_ATTRS.each do |v| instance_variable_set("@#{v}_value".to_sym, nil) end MULTI_VALUE_ATTRS.each do |v| instance_variable_set("@#{v}".to_sym, []) end end
Public Instance Methods
blank?()
click to toggle source
# File lib/ninja_model/relation.rb, line 64 def blank? empty? end
empty?()
click to toggle source
# File lib/ninja_model/relation.rb, line 68 def empty? size.zero? end
inspect()
click to toggle source
# File lib/ninja_model/relation.rb, line 73 def inspect to_a.inspect end
Also aliased as: inspect!
new(*args, &block)
click to toggle source
# File lib/ninja_model/relation.rb, line 36 def new(*args, &block) scoping { @klass.new(*args, &block) } end
Also aliased as: build
scope_for_create()
click to toggle source
# File lib/ninja_model/relation.rb, line 77 def scope_for_create Hash[@predicates.find_all { |w| w.respond_to?(:meth) && w.meth == :eq }.map { |where| [ where.attribute, where.value ] }] end
scoping() { || ... }
click to toggle source
# File lib/ninja_model/relation.rb, line 51 def scoping @klass.scoped_methods << self begin yield ensure @klass.scoped_methods.pop end end
size()
click to toggle source
# File lib/ninja_model/relation.rb, line 60 def size to_a.length end
to_a()
click to toggle source
# File lib/ninja_model/relation.rb, line 42 def to_a @records ||= begin records = @klass.adapter.read(self) @loaded = true records end end
Also aliased as: to_ary
Protected Instance Methods
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/ninja_model/relation.rb, line 90 def method_missing(method, *args, &block) if Array.method_defined?(method) to_a.send(method, *args, &block) elsif @klass.singleton_class.respond_to?(method) merge(@klass.singleton_class.send(method, *args, &block)) elsif @klass.respond_to?(method) scoping { @klass.send(method, *args, &block) } else super end end