scaffolding_extensions 1.6.0 → 1.6.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 872960f23d1949998f8cc0ea351cd25fe6f86628
4
+ data.tar.gz: 56808d4a4119b089f7ae05b7750c58fe8a47a75a
5
+ SHA512:
6
+ metadata.gz: 5070abc1e3cda325816d9bfdd45c3b5597352d3e67e205cdc250b6f9e236aed8345b0f8dc5434db763e3ddeeda294caa21cd9570b087781eb3d20040aca69e56
7
+ data.tar.gz: 1bf61a5380e319e99660e127e797a8497c238397062e6e2500a3615f7ef43ad92cf65127965332a4a7cea0b3b36a9ee55fb29e216037bae16facc3e6b8cdd2f2
data/README CHANGED
@@ -21,14 +21,14 @@ to better suit your needs.
21
21
  Scaffolding Extensions currently supports:
22
22
 
23
23
  * Web Frameworks
24
- * Rails 3.2.9
25
- * Ramaze 2011.12.28
24
+ * Rails 4.0.0
25
+ * Ramaze 2012.12.08
26
26
  * Camping 2.1
27
- * Sinatra 1.3.2
28
- * Rack 1.4.1
27
+ * Sinatra 1.4.3
28
+ * Rack 1.5.2
29
29
  * Object Relational Mappers
30
- * ActiveRecord 3.2.9
31
- * Sequel 3.39.0
30
+ * ActiveRecord 4.0.0
31
+ * Sequel 3.48.0
32
32
  * DataMapper 1.0.2 (see doc/datamapper.txt for details)
33
33
  * Javascript Libaries (used for Ajax/Autocompleting, default is now JQuery)
34
34
  * Prototype 1.6.0.3
@@ -96,8 +96,30 @@ module ScaffoldingExtensions::MetaActiveRecord
96
96
 
97
97
  # Retrieve multiple objects given a hash of options
98
98
  def scaffold_get_objects(options)
99
- options[:conditions] = scaffold_merge_conditions(options[:conditions])
100
- find(:all, options)
99
+ records = self
100
+ if options[:include]
101
+ records = records.includes(*options[:include])
102
+ records = records.references(*options[:include]) if scaffold_use_references
103
+ end
104
+ records = records.order(*options[:order]) if options[:order]
105
+ records = records.limit(options[:limit]) if options[:limit]
106
+ records = records.offset(options[:offset]) if options[:offset]
107
+ conditions = options[:conditions]
108
+ if conditions && Array === conditions && conditions.length > 0
109
+ if String === conditions[0]
110
+ records = records.where(*conditions)
111
+ else
112
+ conditions.each do |cond|
113
+ next if cond.nil?
114
+ records = case cond
115
+ when Hash, String then records.where(cond)
116
+ when Array then records.where(*cond)
117
+ when Proc then records.where(&cond)
118
+ end
119
+ end
120
+ end
121
+ end
122
+ records.to_a
101
123
  end
102
124
 
103
125
  # Return the class, left foreign key, right foreign key, and join table for this habtm association
@@ -139,33 +161,14 @@ module ScaffoldingExtensions::MetaActiveRecord
139
161
  table_name
140
162
  end
141
163
 
142
- private
143
- # Merge an array of conditions into a single condition array
144
- def scaffold_merge_conditions(conditions)
145
- new_conditions = [[]]
146
- if Array === conditions
147
- if conditions.length == 0 || (conditions.length == 1 && conditions[0].nil?)
148
- nil
149
- elsif Array === conditions[0]
150
- conditions.each do |cond|
151
- next unless cond
152
- new_conditions[0] << cond.shift
153
- cond.each{|c| new_conditions << c}
154
- end
155
- if new_conditions[0].length > 0
156
- new_conditions[0] = "(#{new_conditions[0].join(") AND (")})"
157
- new_conditions
158
- else
159
- nil
160
- end
161
- else
162
- conditions
163
- end
164
- else
165
- conditions
166
- end
167
- end
164
+ # Whether to use references in addition to includes for eager loading. This is
165
+ # necessary if you need to reference associated tables when filtering.
166
+ # Can be set with an instance variable.
167
+ def scaffold_use_references
168
+ @scaffold_use_references ||= false
169
+ end
168
170
 
171
+ private
169
172
  # Updates associated records for a given reflection and from record to point to the
170
173
  # to record
171
174
  def scaffold_reflection_merge(reflection, from, to)
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scaffolding_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
5
- prerelease:
4
+ version: 1.6.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jeremy Evans
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-12-11 00:00:00.000000000 Z
11
+ date: 2013-06-25 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description:
15
14
  email: code@jeremyevans.net
@@ -75,6 +74,7 @@ files:
75
74
  - scaffolds/search.rhtml
76
75
  homepage: http://scaffolding-ext.rubyforge.org/
77
76
  licenses: []
77
+ metadata: {}
78
78
  post_install_message:
79
79
  rdoc_options:
80
80
  - --inline-source
@@ -97,21 +97,19 @@ rdoc_options:
97
97
  require_paths:
98
98
  - lib
99
99
  required_ruby_version: !ruby/object:Gem::Requirement
100
- none: false
101
100
  requirements:
102
- - - ! '>='
101
+ - - '>='
103
102
  - !ruby/object:Gem::Version
104
103
  version: 1.8.6
105
104
  required_rubygems_version: !ruby/object:Gem::Requirement
106
- none: false
107
105
  requirements:
108
- - - ! '>='
106
+ - - '>='
109
107
  - !ruby/object:Gem::Version
110
108
  version: '0'
111
109
  requirements: []
112
110
  rubyforge_project: scaffolding-ext
113
- rubygems_version: 1.8.23
111
+ rubygems_version: 2.0.2
114
112
  signing_key:
115
- specification_version: 3
113
+ specification_version: 4
116
114
  summary: Administrative database front-end for multiple web-frameworks and ORMs
117
115
  test_files: []