data_table 0.1.8 → 0.1.9

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.
data/README.rdoc CHANGED
@@ -25,8 +25,8 @@ in your controller:
25
25
  respond_to do |wants|
26
26
  wants.html
27
27
  wants.json do
28
- render(:json => Provider.for_data_table(self, %w(name fein category county state), %w(name fein)) do |provider|
29
- ["<%= link_to(provider, provider) %>", provider.fein, provider.category, provider.county, provider.state]
28
+ render(:json => Provider.for_data_table(self, %w(name fein categories.name county state), %w(name fein)) do |provider|
29
+ ["<%= link_to(provider, provider) %>", provider.fein, provider.category.name, provider.county, provider.state]
30
30
  end)
31
31
  end
32
32
  end
@@ -1,12 +1,27 @@
1
1
  module DataTable
2
2
  module ActiveRecord
3
3
  module ClassMethods
4
+
4
5
  def _find_objects params, fields, search_fields
5
6
  self.where(_where_conditions params[:sSearch], search_fields).
7
+ includes(_discover_joins fields).
6
8
  order(_order_fields params, fields).
7
9
  paginate :page => _page(params), :per_page => _per_page(params)
8
10
  end
9
11
 
12
+ def _discover_joins fields
13
+ joins = Set.new
14
+
15
+ fields.each { |it|
16
+ field = it.split('.')
17
+ if (field.size == 2) then
18
+ joins.add field[0].singularize.to_sym
19
+ end
20
+ }
21
+
22
+ joins.collect
23
+ end
24
+
10
25
  def _where_conditions query, search_fields
11
26
  return if query.blank?
12
27
 
@@ -1,3 +1,3 @@
1
1
  module DataTable
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
3
3
  end
@@ -9,10 +9,11 @@ describe DataTable do
9
9
  it "should find the objects required based on the params" do
10
10
  params = {:sSearch => "answer", :iSortCol_0 => "0", :sSortDir_0 => "desc", :iDisplayLength => 10, :sEcho => 1}
11
11
 
12
+ mock(self)._discover_joins(%w(foo bar baz)) { [] }
12
13
  mock(self)._where_conditions("answer", %w(foo bar)) { "where clause" }
13
14
  mock(self)._order_fields(params, %w(foo bar baz)) { "order" }
14
15
 
15
- mock(self).where("where clause") { mock!.order("order") { mock!.paginate({:page => :page, :per_page => :per_page}) { :answer } } }
16
+ mock(self).where("where clause") { mock!.includes([]) { mock!.order("order") { mock!.paginate({:page => :page, :per_page => :per_page}) { :answer } } } }
16
17
  mock(self)._page(params) { :page }
17
18
  mock(self)._per_page(params) { :per_page }
18
19
 
@@ -33,6 +34,14 @@ describe DataTable do
33
34
 
34
35
  end
35
36
 
37
+ context "#_discover_joins" do
38
+
39
+ it "should return the joins on the fields" do
40
+ _discover_joins(%w(foo.bar foz.ber baz)).should == [:foo, :foz]
41
+ end
42
+
43
+ end
44
+
36
45
  context "#_order_fields" do
37
46
 
38
47
  it "should find the field name and pass the sort direction" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_table
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
5
- prerelease: false
4
+ hash: 9
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 8
10
- version: 0.1.8
9
+ - 9
10
+ version: 0.1.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jason Dew
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-16 00:00:00 -05:00
18
+ date: 2011-04-25 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -42,11 +42,12 @@ dependencies:
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: -1876988247
45
+ hash: 1923831917
46
46
  segments:
47
47
  - 3
48
48
  - 0
49
- - pre2
49
+ - pre
50
+ - 2
50
51
  version: 3.0.pre2
51
52
  type: :runtime
52
53
  version_requirements: *id002
@@ -157,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
157
158
  requirements: []
158
159
 
159
160
  rubyforge_project: data_table
160
- rubygems_version: 1.3.7
161
+ rubygems_version: 1.4.2
161
162
  signing_key:
162
163
  specification_version: 3
163
164
  summary: Simple data preparation from AR/Mongoid to the jQuery DataTables plugin