lib/ampere/model.rb in ampere-1.2.0 vs lib/ampere/model.rb in ampere-1.2.1
- old
+ new
@@ -135,12 +135,14 @@
# Grab a fresh GUID from Redis by incrementing the "__guid" key
if @id.nil? then
@id = Ampere.connection.incr('__guid')
end
- self.attributes.each do |k, v|
- Ampere.connection.hset(key_for_find(self.class, @id), k, k =~ /_id$/ ? v : Marshal.dump(v))
+ Ampere.connection.multi do
+ self.attributes.each do |k, v|
+ Ampere.connection.hset(key_for_find(self.class, @id), k, k =~ /_id$/ ? v : Marshal.dump(v))
+ end
end
self.class.indices.each do |index|
if index.class == String or index.class == Symbol then
Ampere.connection.hset(
@@ -327,12 +329,14 @@
end
end
define_method(:"#{field_name}=") do |val|
val.each do |v|
- Ampere.connection.sadd(key_for_has_many(to_s.downcase, self.id, field_name), v.id)
- # Set pointer for belongs_to
- Ampere.connection.hset(key_for_find(v.class, v.id), "#{my_klass_name}_id", self.send("id"))
+ Ampere.connection.multi do
+ Ampere.connection.sadd(key_for_has_many(to_s.downcase, self.id, field_name), v.id)
+ # Set pointer for belongs_to
+ Ampere.connection.hset(key_for_find(v.class, v.id), "#{my_klass_name}_id", self.send("id"))
+ end
end
end
end
# Defines an index. See the README for more details.