activerecord-pg_array 0.1.4 → 0.2

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: 84b371ce9afd7b7d3105306e2c936a4b28a30f27
4
- data.tar.gz: e3d48d01f780fb13d5b2930c1da52aaf5759ee08
3
+ metadata.gz: 17a2bad120d04dfce009e51fcb416795cc9e92ee
4
+ data.tar.gz: 786d65d1c37c4b96c591af49aff861fadf045087
5
5
  SHA512:
6
- metadata.gz: 13650867ba62d8df654497947c45f6f5536a4f53a3bc7cfd0cc8950093294d3c77ee08c247aac031e2fa7a2d5186034e8044f8e0cc08afd63e0e7d37649f99a0
7
- data.tar.gz: d777f5ee40b572899804e950bca6ed60fdf4511f129701a2d32a65bf7c67a57814220df36b6b6e58cf791102aeab961445f4e7dd2ec99e204fd61dff21b085cb
6
+ metadata.gz: b72879a9edab1046dba9b0d088f0f033e9fb61f98003919530204ffa4eaf9839a50c27cb59a72372b908843d33ba2c1d682f87514d5c8a1ffd206e3bba4ca9ae
7
+ data.tar.gz: 1d740182fdebba292587501ac17bb26762e9df6d481095cfa44e8bb73ce79f19e23ccafcc97b0bd6d46f854fad64586e8e864f7cf9c3b3fefc80daa342e5b416
@@ -25,6 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "rspec", "~> 2.14"
26
26
  spec.add_development_dependency "pg", "~> 0.17"
27
27
  spec.add_development_dependency "pry", "~> 0.9"
28
+ spec.add_development_dependency "pry-nav"
28
29
  spec.add_development_dependency "guard", "~> 2.4"
29
30
  spec.add_development_dependency "guard-rspec", "~> 4.2"
30
31
  end
@@ -5,6 +5,11 @@ module ActiveRecord
5
5
 
6
6
  def self.included(base)
7
7
  base.class_eval do
8
+
9
+ def self.config_array_serializer(hash)
10
+ @@id_attr_map = hash
11
+ end
12
+
8
13
  self.column_types.to_a.select { |c| c[1].instance_variable_get('@array') }.map(&:first).each do |attr_name|
9
14
  ids_regex = /_ids$/
10
15
  friendly_attr = attr_name.sub(ids_regex,'')
@@ -15,15 +20,21 @@ module ActiveRecord
15
20
  friendly_attr_plural = segs.join('_')
16
21
 
17
22
  obj_convert = ->(obj) do
18
- if attr_name =~ ids_regex && obj.kind_of?(ActiveRecord::Base) and
19
- self.column_types[attr_name].type == :integer
23
+ custom_serializer = @@id_attr_map[attr_name.to_sym][obj.class.name.to_sym] rescue nil
24
+
25
+ if @@id_attr_map && custom_serializer
26
+ obj = obj.send(custom_serializer)
27
+ elsif attr_name =~ ids_regex && obj.kind_of?(ActiveRecord::Base) and
28
+ self.column_types[attr_name].type == :integer
20
29
  obj = obj.id
21
30
  end
22
31
  obj
23
32
  end
33
+
24
34
  atr = ->(slf) do
25
35
  slf.send attr_name.to_sym
26
36
  end
37
+
27
38
  atr_will_change = ->(slf) do
28
39
  slf.send(:"#{attr_name}_will_change!")
29
40
  end
@@ -1,5 +1,5 @@
1
1
  module Activerecord
2
2
  module PgArray
3
- VERSION = "0.1.4"
3
+ VERSION = "0.2"
4
4
  end
5
5
  end
@@ -2,7 +2,9 @@ require 'spec_helper'
2
2
  require 'active_record'
3
3
 
4
4
  class Wolf < ActiveRecord::Base
5
+ # config_array_serializer names: :name
5
6
  end
7
+
6
8
  class Chicken < ActiveRecord::Base
7
9
  end
8
10
 
@@ -11,6 +13,7 @@ require 'pry'
11
13
 
12
14
  class WolfTracker < ActiveRecord::Base
13
15
  include ActiveRecord::PGArray
16
+ config_array_serializer pack_names: {:Wolf => :name}
14
17
  end
15
18
 
16
19
  describe WolfTracker do
@@ -56,6 +59,11 @@ describe WolfTracker do
56
59
  expect(wolf_tracker.wolf_ids).to eq [wolfy.id]
57
60
  end
58
61
 
62
+ it "should be able to add a non integer attribute type to an array" do
63
+ wolf_tracker.add_pack_name(wolfy)
64
+ expect(wolf_tracker.pack_names).to eq [wolfy.name]
65
+ end
66
+
59
67
  it "should add_<attr>" do
60
68
  wolf_tracker.add_wolf(wolfy)
61
69
  wolf_tracker.save!
@@ -89,6 +97,12 @@ describe WolfTracker do
89
97
  wolf_tracker.pack_names.length.should be 2
90
98
  end
91
99
 
100
+ it "should add multiple add_<atts>! with an array argument of class instances" do
101
+ wolf_tracker.add_pack_names!([wolfy, son_of_wolfy])
102
+ wolf_tracker.reload
103
+ expect(wolf_tracker.pack_names).to match_array [wolfy.name, son_of_wolfy.name]
104
+ end
105
+
92
106
  it "should add with regular integer value" do
93
107
  wolf_tracker.add_wolf(1)
94
108
  wolf_tracker.save!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-pg_array
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean McCleary
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-23 00:00:00.000000000 Z
11
+ date: 2014-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-nav
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: guard
99
113
  requirement: !ruby/object:Gem::Requirement