activerecord-pg_array 0.1.4 → 0.2

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: 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