Class: KeyValueTree::ActiveRecordStore

Inherits:
Store
  • Object
show all
Defined in:
lib/keyvaluetree/active_record_store.rb

Instance Method Summary collapse

Methods inherited from Store

#to_hash

Constructor Details

#initialize(storage_class, key_symbol = :key, value_symbol = :value) ⇒ ActiveRecordStore

Returns a new instance of ActiveRecordStore.



5
6
7
8
9
# File 'lib/keyvaluetree/active_record_store.rb', line 5

def initialize(storage_class, key_symbol = :key, value_symbol = :value)
  @storage_class = storage_class
  @key_symbol = key_symbol
  @value_symbol = value_symbol
end

Instance Method Details

#delete(key) ⇒ Object



22
23
24
# File 'lib/keyvaluetree/active_record_store.rb', line 22

def delete(key)
  @storage_class.delete_all(:key => key)
end

#delete_all(key) ⇒ Object



36
37
38
39
40
# File 'lib/keyvaluetree/active_record_store.rb', line 36

def delete_all(key)
  keys_starting_with(key.to_s).each do |each|
    self.delete(each)
  end
end

#key(key) ⇒ Object



11
12
13
14
# File 'lib/keyvaluetree/active_record_store.rb', line 11

def key(key)
  entry = @storage_class.find(@key_symbol => key)
  entry ? entry[@value_symbol] : nil
end

#keysObject



26
27
28
# File 'lib/keyvaluetree/active_record_store.rb', line 26

def keys
  @storage_class.all.map { |each| each[@key_symbol] }
end

#keys_starting_with(key) ⇒ Object



30
31
32
33
34
# File 'lib/keyvaluetree/active_record_store.rb', line 30

def keys_starting_with(key)
  self.keys.select do |sub_key|
    sub_key.start_with?(key.to_s)
  end
end

#store(key, value) ⇒ Object



16
17
18
19
20
# File 'lib/keyvaluetree/active_record_store.rb', line 16

def store(key, value)
  setting = @storage_class.find_or_create(@key_symbol => key)
  setting[@value_symbol] = value
  setting.save!
end