Sha256: dfb20b4f7a025b7bff3c807df52c02036772120cf3ad793ad559497b939b2748
Contents?: true
Size: 994 Bytes
Versions: 4
Compression:
Stored size: 994 Bytes
Contents
module ModelMacros # Create a new followable model def followable(klass_name, &block) spawn_model klass_name, ActiveRecord::Base do acts_as_followable instance_exec(&block) if block end end # Create a new follower model def follower(klass_name, &block) spawn_model klass_name, ActiveRecord::Base do acts_as_follower instance_exec(&block) if block end end # Create a new followable and follower model def followable_and_follower(klass_name, &block) spawn_model klass_name, ActiveRecord::Base do acts_as_followable acts_as_follower instance_exec(&block) if block end end protected # Create a new model class def spawn_model(klass_name, parent_klass, &block) Object.instance_eval { remove_const klass_name } if Object.const_defined?(klass_name) klass = Object.const_set(klass_name, Class.new(parent_klass)) Object.const_get(klass_name).class_eval(&block) if block_given? klass end end
Version data entries
4 entries across 4 versions & 1 rubygems