Skip to content

Commit

Permalink
AR adapter was creating new records instead of updating existing
Browse files Browse the repository at this point in the history
  • Loading branch information
erithmetic committed Jun 14, 2011
1 parent 69366da commit 7598068
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
16 changes: 9 additions & 7 deletions lib/moneta/adapters/active_record.rb
Expand Up @@ -25,33 +25,35 @@ def initialize(options = {})

def migrate
unless Store.table_exists?
Store.connection.create_table Store.table_name, :id => false do |t|
t.string 'key', :primary => :true
Store.connection.create_table Store.table_name do |t|
t.string 'key_name', :primary => :true
t.string 'value'
end
end
end

def key?(key)
record = Store.find_by_key key_for(key)
record = Store.find_by_key_name key_for(key)
!record.nil?
end

def [](key)
record = Store.find_by_key key_for(key)
record = Store.find_by_key_name key_for(key)
record ? deserialize(record.value) : nil
end

def delete(key)
record = Store.find_by_key key_for(key)
record = Store.find_by_key_name key_for(key)
if record
Store.where(:key => key_for(record.key)).delete_all
Store.where(:key_name => key_for(record.key_name)).delete_all
deserialize record.value
end
end

def store(key, value, options = {})
record = Store.new :key => key_for(key), :value => serialize(value)
record = Store.find_by_key_name key_for(key)
record ||= Store.new :key_name => key_for(key)
record.value = serialize(value)
record.save!
value
end
Expand Down
7 changes: 7 additions & 0 deletions spec/moneta_active_record_spec.rb
Expand Up @@ -19,6 +19,13 @@
end

it_should_behave_like "a read/write Moneta cache"

it 'updates an existing key/value' do
@cache['foo/bar'] = 4
@cache['foo/bar'] += 4
records = Moneta::Adapters::ActiveRecord::Store.find :all, :conditions => { :key_name => 'foo/bar' }
records.count.should == 1
end
end

context 'using preexisting ActiveRecord connection' do
Expand Down

0 comments on commit 7598068

Please sign in to comment.