class Lolita::Adapter::ActiveRecord
Attributes
dbi[R]
klass[R]
Public Class Methods
new(dbi)
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 8 def initialize(dbi) @dbi=dbi @klass=dbi.klass end
Public Instance Methods
associations()
click to toggle source
Return all class associations
# File lib/lolita/adapter/active_record.rb, line 68 def associations # is caching ok? unless @associations @associations = {} klass.reflections.each{|name,association| @associations[name] = Association.new(association,self) } end @associations end
collection()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 200 def collection self.klass #FIXME not realy same as in mongoid end
collection_name()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 204 def collection_name self.klass.table_name end
collection_name=(value)
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 208 def collection_name=(value) self.klass.table_name = value end
collection_names()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 216 def collection_names self.klass.connection.select_all("show tables from #{db_name}").map{|r| r.values.first} end
collections()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 212 def collections self.klass #FIXME not realy same as in mongoid end
db()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 192 def db self.klass.connection end
db_name()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 196 def db_name db.current_database end
field_by_association(name)
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 160 def field_by_association(name) possible_association = self.associations.detect{|assoc_name,association| name.to_s == assoc_name.to_s } if possible_association self.field_by_name(possible_association.last.key) end end
field_by_name(name)
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 154 def field_by_name(name) self.fields.detect{|field| field.name.to_s == name.to_s } end
fields()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 147 def fields @fields||=self.klass.columns.collect{|column| Field.new(column,self) } @fields end
nested_attributes_options()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 220 def nested_attributes_options self.klass.nested_attributes_options end
order_method()
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 224 def order_method :order end
search(query, options = {})
click to toggle source
# File lib/lolita/adapter/active_record.rb, line 169 def search(query, options = {}) #TODO raise error or warn when there are lot of records and no index on field unless query.blank? resources = self.klass.arel_table content_fields = @dbi.fields.map{|field| field.type!="string" ? nil : field.name.to_sym}.compact if options[:fields] && options[:fields].any? content_fields = content_fields & options[:fields] end scope = nil content_fields.each_with_index do |field,index| new_scope = resources[field].matches("%#{query}%") unless index == 0 scope = scope.or(new_scope) else scope = new_scope end end self.klass.where(scope) else self.klass.where(nil) end end