active_record_composition 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/active_record_composition.rb +11 -8
  2. metadata +8 -8
@@ -22,20 +22,23 @@ module ActiveRecordComposition
22
22
  end
23
23
 
24
24
  def method_missing(method, *args, &block)
25
- @active_composite.send method, *args, &block
25
+ begin
26
+ active_composite.send method, *args, &block
27
+ rescue
28
+ super.method_missing method, *args, &block
29
+ end
26
30
  end
27
31
 
28
32
  end
29
33
 
34
+ def self.create_class(class_name, superclass, &block)
35
+ klass = Class.new superclass, &block
36
+ Object.const_set class_name, klass
37
+ end
38
+
30
39
  def self.included(base)
31
40
  base.extend(ClassMethods)
32
- base.active_composite = Object.const_set("#{base.name}ActiveComposite", Class.new(ActiveRecord::Base) do
33
- def is_a?(compared)
34
- return true if (self.class.name.gsub('ActiveComposite', '') == compared.name)
35
- super.is_a? compared
36
- end
37
- end)
38
- base.active_composite.table_name = "#{base.name}s".underscore
41
+ base.active_composite = create_class("#{base.name}", ActiveRecord::Base)
39
42
  end
40
43
 
41
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_composition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-23 00:00:00.000000000 Z
12
+ date: 2012-02-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &10861860 !ruby/object:Gem::Requirement
16
+ requirement: &16522700 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,13 +21,13 @@ dependencies:
21
21
  version: 3.2.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *10861860
24
+ version_requirements: *16522700
25
25
  description: ActiveRecord is awesome, inheritance is not always so awesome. This gem
26
26
  is for people who want to use ActiveRecord but don't want to be forced to use inheritance
27
- in their models. Magic stuff happens that keeps the ActiveRecord::Base relationship
28
- away from your model object graph until runtime but you can still use all the ActiveRecord
29
- methods on your model as you're accustomed to. Also, you now have an inheritance
30
- slot freed up - easy peasy :-)
27
+ of ActiveRecord:Base in their models. Magic stuff happens that keeps the ActiveRecord::Base
28
+ relationship away from your model object graph until runtime but you can still use
29
+ all the ActiveRecord methods on your model as you're accustomed to. Also, you now
30
+ have an inheritance slot freed up - easy peasy :-)
31
31
  email: kevin.beddingfield@gmail.com
32
32
  executables: []
33
33
  extensions: []