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



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/bhf/mongoid/document.rb', line 93

def bhf_default_search(search_params)
  return self if (search_term = search_params[:text]).blank?

  arr = []
  columns_hash.each_pair do |column, props|
    is_number = search_term.to_i.to_s == search_term || search_term.to_f.to_s == search_term

    if props.type == :primary_key
      arr << {props.name.to_sym => search_term}
    elsif props.type == :string || props.type == :text
      arr << {props.name.to_sym => /#{search_term}/i}
    elsif props.type == :integer && is_number
      arr << {props.name.to_sym => search_term.to_i}
    elsif props.type == :float && is_number
      arr << {props.name.to_sym => search_term.to_f}
    end

  end
  self.or(arr)
end

#bhf_embedded?Boolean

Returns:

  • (Boolean)


159
160
161
# File 'lib/bhf/mongoid/document.rb', line 159

def bhf_embedded?
  embedded?
end

#bhf_find_embed(parent_id, ref_id) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/bhf/mongoid/document.rb', line 142

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



127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/bhf/mongoid/document.rb', line 127

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] and 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

#get_embedded_parent(parent_id, &block) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/bhf/mongoid/document.rb', line 114

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 block.call(parent, meta) if block_given?
      return parent
    end
  end
end

#order(a) ⇒ Object



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

def order(a)
  order_by(a)
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

#reorder(a) ⇒ Object



89
90
91
# File 'lib/bhf/mongoid/document.rb', line 89

def reorder(a)
  order_by(a)
end