Module: DataMapper::Is::Searchable

Included in:
Model
Defined in:
lib/dm-is-searchable/is/searchable.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#is_searchable(options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/dm-is-searchable/is/searchable.rb', line 5

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