Sha256: 98d627dcbccde151573cc4bfc2982c1de475a6d22711e8afe86f6b633745d160
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 KB
Contents
module DataMapper module Is module Searchable def is_searchable(options = {}) search_repository = options.delete(:repository) || :search @search_repository = search_repository extend ClassMethods after(:save) do |success, *args| if success # We use the adapter directly to bypass our after :save, # and because create caches the repository and new_record? state. DataMapper.repository(search_repository).adapter.create([self]) end end after(:destroy) do |success| if success # Since this is after the model has been destroyed, it is # a new record, and a simple to_query will return nil. query = model.to_query(repository, key, {}) DataMapper.repository(search_repository).adapter.delete(query) end end end module ClassMethods def search(search_options = {}, options = {}) docs = repository(@search_repository) { self.all(search_options) } ids = docs.collect { |doc| doc[:id] } self.all(options.merge(:id => ids)) end end # module ClassMethods end # module Searchable end # module Is end # module DataMapper
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dm-is-searchable-0.9.7 | lib/dm-is-searchable/is/searchable.rb |
dm-is-searchable-0.9.8 | lib/dm-is-searchable/is/searchable.rb |