Module: Bhf::Mongoid::Document::ClassMethods

Defined in:
lib/bhf/mongoid/document.rb

Instance Method Summary collapse

Instance Method Details

#bhf_attribute_method?(column_name) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/bhf/mongoid/document.rb', line 77

def bhf_attribute_method?(column_name)
  attribute_method?(column_name)
end

#bhf_default_search(search_params) ⇒ Object



98
99
100
101
102
103
104
# File 'lib/bhf/mongoid/document.rb', line 98

def bhf_default_search(search_params)
  return if (search_term = search_params[:text]).blank?
  
  # TODO: add mongoid search
  return where(name: /^antp/i)
  #return where("this.nick == 'antpaw'")
end

#bhf_embedded?Boolean

Returns:

  • (Boolean)


151
152
153
# File 'lib/bhf/mongoid/document.rb', line 151

def bhf_embedded?
  embedded?
end

#bhf_find_embed(parent_id, ref_id) ⇒ Object



134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'lib/bhf/mongoid/document.rb', line 134

def bhf_find_embed(parent_id, ref_id)
  get_embedded_parent parent_id do |parent, meta|
    # :forced_nil_inverse?, :foreign_key, :foreign_key_check, :foreign_key_setter, :index, :indexed?, :inspect, :inverses, :inverse, :inverse_class_name, :inverse_class_name?, :inverse_foreign_key, :inverse_klass, :inverse_metadata, :inverse_of, :inverse_of?, :inverse_setter, :inverse_type, :inverse_type_setter
    key_name = if meta.inverse_of?
      meta.inverse_of
    else
      meta.inverse_foreign_key.pluralize
    end.to_s
    relation = parent.send(key_name)
    if parent.relations[key_name].macro == :embeds_one
      relation
    else
      relation.find(ref_id)
    end
  end
end

#bhf_new_embed(parent_id, params = nil) ⇒ Object



119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/bhf/mongoid/document.rb', line 119

def bhf_new_embed(parent_id, params = nil)
  get_embedded_parent parent_id do |parent, meta|
    key_name = if meta.inverse_of?
      meta.inverse_of
    else
      meta.inverse_foreign_key.pluralize
    end.to_s
    if parent.relations[key_name].macro == :embeds_one
      parent.send("build_#{key_name}", params)
    else
      parent.send(key_name).build(params)
    end
  end
end

#bhf_primary_keyObject



81
82
83
# File 'lib/bhf/mongoid/document.rb', line 81

def bhf_primary_key
  '_id'
end

#columns_hashObject



58
59
60
61
62
63
64
65
66
# File 'lib/bhf/mongoid/document.rb', line 58

def columns_hash
  c = {}
  fields.each_pair do |key, meta|
    next if meta.options[:metadata]
    next if key == '_type'
    c[key] = Field.new(meta)
  end
  c
end

#except(key) ⇒ Object



85
86
87
88
89
90
# File 'lib/bhf/mongoid/document.rb', line 85

def except(key)
  if key == :order || key == :sort
    #order_by.extras(sort: []) #TODO: drop default_scope criteria
  end
  self
end

#get_embedded_parent(parent_id, &block) ⇒ Object



106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/bhf/mongoid/document.rb', line 106

def get_embedded_parent(parent_id, &block)
  relations.each do |key, meta|
    next unless meta.macro == :embedded_in
    parent = meta.class_name.constantize
    parent = parent.find(parent_id) rescue nil
    
    if parent
      return parent unless block_given?
      return block.call(parent, meta)
    end
  end
end

#order(a) ⇒ Object



92
93
94
95
96
# File 'lib/bhf/mongoid/document.rb', line 92

def order(a)
  field, direction = a.split(' ')
  return self if field.blank? or direction.blank?
  self.send(direction.downcase, field)
end

#reflectionsObject



68
69
70
71
72
73
74
75
# File 'lib/bhf/mongoid/document.rb', line 68

def reflections
  c = {}
  relations.each do |key, meta|
    next if meta.macro == :embedded_in
    c[key.to_sym] = Reflection.new(meta)
  end
  c
end