# File lib/ars/familiar/mongoid.rb, line 28 def primary_key @primary_key || primary_key! end
class Ars::Familiar::Mongoid
Attributes
class_map[R]
model[R]
model_name[R]
Public Class Methods
new(model)
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 11 def initialize(model) @model_name = model if Object.const_defined? model.to_s, true @model = model.constantize end end
Public Instance Methods
[](*args)
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 7 def [](*args) ConstantizableArray[args] end
attributes_to_define!()
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 40 def attributes_to_define! @attributes_to_define = standard_fields.keys.map(&:to_sym) end
id!()
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 36 def id! @id = primary_key? ? primary_key : :id end
primary_key()
click to toggle source
primary_key!()
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 18 def primary_key! @primary_key = case when model.respond_to?(:primary_key) model.primary_key when model.respond_to?(:guid), model.public_method_defined?(:guid) :guid end end
primary_key?()
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 32 def primary_key? !!primary_key end
relation_switch(name)
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 62 def relation_switch(name) case name.name when 'Mongoid::Relations::Embedded::Many', 'Mongoid::Relations::Referenced::Many' :has_many when 'Mongoid::Relations::Embedded::One', 'Mongoid::Relations::Referenced::One' :has_one when 'Mongoid::Relations::Referenced::ManyToMany' return :has_many, :belongs_to else raise StandardError, "Unknown Relationship: #{name}" end end
relationships_to_define!(**opts)
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 49 def relationships_to_define!(**opts) filter, class_map = extract_options(opts) @relationships_to_define = model.relations.values.select(&filter).flat_map { |relation| name = relation.fetch(:name) [*relation_switch(relation.fetch(:relation))]. map{|rel| [rel, name, class_name: class_map[name]] }. compact }.compact end
standard_fields()
click to toggle source
# File lib/ars/familiar/mongoid.rb, line 44 def standard_fields model.fields.select{|name, field| field.class.name == 'Mongoid::Fields::Standard'}. tap{|fields| fields[id] = fields.delete("_id") } end