oldie_rails_models 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a64825a3f9d15838a77edf9b861418db934efad6
4
- data.tar.gz: 9b1192d2c2d0bf9f2c1fa893e8f34c6d92b8c6db
3
+ metadata.gz: f19b6deccbc3538d651a7f99f38923fb6075f18a
4
+ data.tar.gz: af2e942a1b79e533bfda29e79dc73142eeb2cb1f
5
5
  SHA512:
6
- metadata.gz: 4faa472d373264bab879708fbb4821fbbfde23cc60e365152531fdec1bf7afd30f63e550dc1a3d8e8aa741f4218a853327ee30a0e7d180c4b416537068afd91e
7
- data.tar.gz: f1c1fcc52d64b9387f8578f231b7e999e259063cd893825e29c1ef5bee980d105c3bebf52ea3307da9bf8d7dcaa0359db351d9e8e13383a2a8f7cbac62c8072c
6
+ metadata.gz: 74ad6f5ebbf29362c6db2d06f458e30ffed1c895cca5dd7c3d036c57a574e3d81b4df34b09154a1c28a2133f7c65d69c99d9a8f747dbb3d37e9b31f98e489e2f
7
+ data.tar.gz: e5ec3bd77e8a6e8edec1aea979ca2c863b904c0b2652431d807feaa430a4d7733d3072ab41bb1b55d9c43cad25913db34317ef9393b341192b7d64d1f6c99764
@@ -4,21 +4,23 @@ module OldieRailsModels
4
4
  def named_scope(*args)
5
5
  name, opts, block = args
6
6
 
7
- scope name, ->(*p) {
7
+ unless self.respond_to?(name.to_sym)
8
+ scope name, ->(*p) {
8
9
 
9
- h = case opts
10
- when Hash
11
- opts
12
- when Proc
13
- opts.call(*p)
14
- end
10
+ h = case opts
11
+ when Hash
12
+ opts
13
+ when Proc
14
+ opts.call(*p)
15
+ end
15
16
 
16
- scoped(h)
17
- }
17
+ scoped(h, self)
18
+ }
19
+ end
18
20
  end
19
21
 
20
- def scoped(h)
21
- h.inject(self) do |s, (key, value)|
22
+ def scoped(h, parent)
23
+ h.inject(parent) do |s, (key, value)|
22
24
  case key
23
25
  when :conditions
24
26
  s.where(value)
@@ -36,6 +38,8 @@ module OldieRailsModels
36
38
  s.group(value)
37
39
  when :having
38
40
  s.having(value)
41
+ when :finder_sql
42
+ s.find_by_sql(value)
39
43
  end
40
44
  end
41
45
  end
@@ -66,6 +70,22 @@ module OldieRailsModels
66
70
 
67
71
  def attr_accessible(*args); end
68
72
 
73
+ def has_many(*args)
74
+ name, opts = args
75
+ if opts
76
+ finders = {}
77
+ [:conditions, :order, :joins, :limit, :include, :offset, :group, :having, :finder_sql].each do |k|
78
+ if opts[k]
79
+ finders[k] = opts[k]
80
+ opts.delete(k)
81
+ end
82
+ end
83
+ super(name, -> { scoped(finders, self) }, opts)
84
+ else
85
+ super(name, opts)
86
+ end
87
+ end
88
+
69
89
  private
70
90
 
71
91
  def add_parameter(arr, h)
@@ -78,3 +98,5 @@ module OldieRailsModels
78
98
 
79
99
  end
80
100
  end
101
+
102
+
@@ -1,3 +1,3 @@
1
1
  module OldieRailsModels
2
- VERSION = "0.2.6"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oldie_rails_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Dubovskoy