lib/ampere/model.rb in ampere-1.2.2 vs lib/ampere/model.rb in ampere-1.2.3

- old
+ new

@@ -313,28 +313,28 @@ define_method(:"#{field_name}=") do |val| return nil if val.nil? # Set attr with key where referred model is stored self.send("#{field_name}_id=", val.id) # Also update that model's hash with a pointer back to here - val.send("#{my_klass_name}_id=", self.send("id")) + val.send("#{my_klass_name}_id=", self.send("id")) if val.respond_to?("#{my_klass_name}_id=") end end # Defines a has_many relationship with another model. See the README for more details. def has_many(field_name, options = {}) klass_name = (options[:class] or options['class'] or field_name.to_s.gsub(/s$/, '')) my_klass_name = to_s.downcase define_method(:"#{field_name}") do - (Ampere.connection.smembers(key_for_has_many(to_s.downcase, self.id, field_name))).map do |id| + (Ampere.connection.smembers(key_for_has_many(my_klass_name, self.id, field_name))).map do |id| eval(klass_name.to_s.capitalize).find(id) end end define_method(:"#{field_name}=") do |val| val.each do |v| Ampere.connection.multi do - Ampere.connection.sadd(key_for_has_many(to_s.downcase, self.id, field_name), v.id) + Ampere.connection.sadd(key_for_has_many(my_klass_name, 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