arel-helpers 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5b9e21c4189a1c32c6361aca598fa70d942f5f2d
4
- data.tar.gz: 10815ed87668b9fd619cfcdb83c4efef8ea0ad82
3
+ metadata.gz: 6356cdb2e00758c2e17276118d916f727a1be308
4
+ data.tar.gz: 26faaf1834fd66939b376ef0caa88f7e85d6bc41
5
5
  SHA512:
6
- metadata.gz: ca0257e7a5fe7e7ca769fd4fb60ab7016f8fd6d7e520e65527b8522db0ab07afb41c3e92ae02f009c73bcf1e0ab93d939b4256e51fa40bc46b24a90656e4c72a
7
- data.tar.gz: 3a5b57d717d31d94d87008fca7cab200d50dbfff13a25a2f9050c4c24365c4e6d8197f3e491180df7785ca24abc201b2440b7192f6ae2a1dfe142a8a63ff3ba2
6
+ metadata.gz: e07f4c676161cd241f861b48aef16411f262f09fc53d9773432e185804e062c41d117d196f553b2fb3fff834c42ec7fbd3e081ad42ed741a6ced87f66d7c1a73
7
+ data.tar.gz: 9a72da308ac57e7df7dab0fce3c2909d6478f8c96170ede5c98fcf940f51f415c529838150dca14fd83ced259846c84601d312fb406b59a1545d120c43fa46c1
data/History.txt CHANGED
@@ -37,3 +37,7 @@
37
37
  == 2.3.0
38
38
 
39
39
  * Adding support for Rails 5 (@vkill #24, @camertron #26)
40
+
41
+ == 2.4.0
42
+
43
+ * Adding support for Rails 5.1 (@hasghari #30)
data/README.md CHANGED
@@ -96,6 +96,23 @@ Post.joins(
96
96
 
97
97
  Easy peasy.
98
98
 
99
+ Note that pretty much anything you can pass to ActiveRecord's `#join` method you can also pass to `#join_association`'s second argument. For example, you can pass a hash to indicate a set of nested associations:
100
+
101
+ ```ruby
102
+ Post.joins(
103
+ ArelHelpers.join_association(Post, { comments: :author })
104
+ )
105
+ ```
106
+
107
+ This might execute the following query:
108
+
109
+ ```sql
110
+ SELECT "posts".*
111
+ FROM "posts"
112
+ INNER JOIN "comments" ON "comments"."post_id" = "posts"."id"
113
+ INNER JOIN "authors" ON "authors"."id" = "comments"."author_id"
114
+ ```
115
+
99
116
  `#join_association` also allows you to customize the join conditions via a block:
100
117
 
101
118
  ```ruby
@@ -108,7 +108,7 @@ module ArelHelpers
108
108
  constraints = join_dependency.join_constraints([], join_type)
109
109
 
110
110
  binds = constraints.flat_map do |info|
111
- prepared_binds = table.connection.prepare_binds_for_database(info.binds)
111
+ prepared_binds = info.binds.map(&:value_for_database)
112
112
  prepared_binds.map { |value| table.connection.quote(value) }
113
113
  end
114
114
 
@@ -1,5 +1,5 @@
1
1
  # encoding: UTF-8
2
2
 
3
3
  module ArelHelpers
4
- VERSION = "2.3.0"
4
+ VERSION = '2.4.0'
5
5
  end
@@ -1,6 +1,8 @@
1
1
  # encoding: UTF-8
2
2
 
3
- class CreatePostsTable < ActiveRecord::Migration
3
+ SuperClass = ActiveRecord::VERSION::MAJOR >= 5 && ActiveRecord::VERSION::MINOR >= 1 ? ActiveRecord::Migration[5.1] : ActiveRecord::Migration
4
+
5
+ class CreatePostsTable < SuperClass
4
6
  def change
5
7
  create_table :posts do |t|
6
8
  t.column :title, :string
@@ -8,7 +10,7 @@ class CreatePostsTable < ActiveRecord::Migration
8
10
  end
9
11
  end
10
12
 
11
- class CreateCommentsTable < ActiveRecord::Migration
13
+ class CreateCommentsTable < SuperClass
12
14
  def change
13
15
  create_table :comments do |t|
14
16
  t.references :post
@@ -16,7 +18,7 @@ class CreateCommentsTable < ActiveRecord::Migration
16
18
  end
17
19
  end
18
20
 
19
- class CreateAuthorsTable < ActiveRecord::Migration
21
+ class CreateAuthorsTable < SuperClass
20
22
  def change
21
23
  create_table :authors do |t|
22
24
  t.references :comment
@@ -25,7 +27,7 @@ class CreateAuthorsTable < ActiveRecord::Migration
25
27
  end
26
28
  end
27
29
 
28
- class CreateFavoritesTable < ActiveRecord::Migration
30
+ class CreateFavoritesTable < SuperClass
29
31
  def change
30
32
  create_table :favorites do |t|
31
33
  t.references :post
@@ -33,7 +35,7 @@ class CreateFavoritesTable < ActiveRecord::Migration
33
35
  end
34
36
  end
35
37
 
36
- class CreateCollabPostsTable < ActiveRecord::Migration
38
+ class CreateCollabPostsTable < SuperClass
37
39
  def change
38
40
  create_table :collab_posts do |t|
39
41
  t.references :authors
@@ -41,13 +43,13 @@ class CreateCollabPostsTable < ActiveRecord::Migration
41
43
  end
42
44
  end
43
45
 
44
- class CreateCardsTable < ActiveRecord::Migration
46
+ class CreateCardsTable < SuperClass
45
47
  def change
46
48
  create_table :cards
47
49
  end
48
50
  end
49
51
 
50
- class CreateCardLocationsTable < ActiveRecord::Migration
52
+ class CreateCardLocationsTable < SuperClass
51
53
  def change
52
54
  create_table :card_locations do |t|
53
55
  t.references :location
@@ -56,13 +58,13 @@ class CreateCardLocationsTable < ActiveRecord::Migration
56
58
  end
57
59
  end
58
60
 
59
- class CreateLocationsTable < ActiveRecord::Migration
61
+ class CreateLocationsTable < SuperClass
60
62
  def change
61
63
  create_table :locations
62
64
  end
63
65
  end
64
66
 
65
- class CreateCommunityTicketsTable < ActiveRecord::Migration
67
+ class CreateCommunityTicketsTable < SuperClass
66
68
  def change
67
69
  create_table :community_tickets
68
70
  end
@@ -29,6 +29,20 @@ describe ArelHelpers do
29
29
  'SELECT "posts".* FROM "posts" INNER JOIN "comments" ON "comments"."post_id" = "posts"."id" INNER JOIN "authors" ON "authors"."id" = "comments"."author_id"'
30
30
  end
31
31
 
32
+ it "should work for a nested hash of association names" do
33
+ Post
34
+ .joins(ArelHelpers.join_association(Post, { comments: :author }))
35
+ .to_sql.should ==
36
+ 'SELECT "posts".* FROM "posts" INNER JOIN "comments" ON "comments"."post_id" = "posts"."id" INNER JOIN "authors" ON "authors"."id" = "comments"."author_id"'
37
+ end
38
+
39
+ it "should work with outer joins when given a nested hash of association names" do
40
+ Post
41
+ .joins(ArelHelpers.join_association(Post, { comments: :author }, Arel::Nodes::OuterJoin))
42
+ .to_sql.should ==
43
+ 'SELECT "posts".* FROM "posts" LEFT OUTER JOIN "comments" ON "comments"."post_id" = "posts"."id" LEFT OUTER JOIN "authors" ON "authors"."id" = "comments"."author_id"'
44
+ end
45
+
32
46
  it "should be able to handle multiple associations" do
33
47
  Post.joins(ArelHelpers.join_association(Post, [:comments, :favorites])).to_sql.should ==
34
48
  'SELECT "posts".* FROM "posts" INNER JOIN "comments" ON "comments"."post_id" = "posts"."id" INNER JOIN "favorites" ON "favorites"."post_id" = "posts"."id"'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arel-helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Dutro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-24 00:00:00.000000000 Z
11
+ date: 2017-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord