acts_as_has_many 0.1.1 → 0.1.3

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
  SHA256:
3
- metadata.gz: e1c35cd5acfe03f30a446b4c904e38aef80461bc24907f66ad306a4b6dae967f
4
- data.tar.gz: 5a6a9d834a8c084e8bb787e950c4dee97f4d1df05de517facde27d70d8d12a5c
3
+ metadata.gz: f40c7648b7c3011fe987b13a9f8fb232b937fc1efd1540185f5450ca5e15d0d1
4
+ data.tar.gz: ffed6b529541f5d1fd815f137ce318b9f0b577defeec61bbb3d34e0feff57b54
5
5
  SHA512:
6
- metadata.gz: 4cff1ccee79f5faaa58e80f43285de6a48ac87fe601751e52425af25844a49fee36e12a414abfe32ad60f8f7306532cc14fdfaa0e7b1db02bd2df9fa1aeb3e44
7
- data.tar.gz: d828ee4417df4a549e20aa68935ad52bb3caf4c9efefbacf3ced47c0f2e91ddbe8d0cc814e41554459ee073563f7095d30a91a2849809ed9779b76145fb66789
6
+ metadata.gz: fdc6c46341b60b8888924f4ce96b015970039a45bde990e81c8d14790538e6370c8f5b764251597d9f6591b1c3f15c1d0f6f4bd1aaf541cc94e7eb3df0a6803c
7
+ data.tar.gz: 2321d11bb3def53af53e3d00d4a67bdb14aadfaaec8865c588a3d87064c820f1b805f630fc52d3bee4ffe5c3d2f4ca644e60c19c72b6fba885f5e49e830ae889
data/.rspec ADDED
@@ -0,0 +1,4 @@
1
+ --color
2
+ --warnings
3
+ --format progress
4
+ --require spec_helper
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [0.1.0] - 2023-10-22
3
+ ## [0.1.1]
4
4
 
5
5
  - Initial release
6
+
7
+ ## [0.1.2]
8
+
9
+ - separate method for acts_as_accepts_nested_attributes_for
10
+
11
+ ## [0.1.3]
12
+
13
+ - Added unit tests
14
+
15
+ - fix(): convert attribute to string before classifing
16
+
17
+ - Add changelogs
18
+
19
+ - fix lint issues with rubocop
20
+
21
+ - use map + compact instead of filter_map to support older versions of ruby
data/Gemfile CHANGED
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source "https://rubygems.org"
3
+ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in acts_as_has_many.gemspec
6
6
  gemspec
7
-
8
- gem "rake", "~> 13.0"
data/Rakefile CHANGED
@@ -1,4 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- task default: %i[]
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ task default: :spec
7
+
8
+ desc 'Run specs'
9
+ RSpec::Core::RakeTask.new
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActsAsHasMany
4
- VERSION = "0.1.1"
4
+ VERSION = '0.1.3'
5
5
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "acts_as_has_many/version"
3
+ require_relative 'acts_as_has_many/version'
4
4
 
5
5
  module ActsAsHasMany
6
6
  def self.included(base)
@@ -12,20 +12,26 @@ module ActsAsHasMany
12
12
  validates attribute, associated: true
13
13
 
14
14
  column = options[:attribute].presence || attribute
15
- klass = options[:class_name].presence || attribute.classify
16
-
17
- define_method(attribute) do
15
+ klass = options[:class_name].presence || attribute.to_s.classify
16
+
17
+ define_method(attribute.to_sym) do
18
18
  @options ||= read_attribute(column).map do |option|
19
19
  klass.constantize.new(option)
20
20
  end
21
21
  end
22
22
 
23
23
  define_method("#{attribute}=".to_sym) do |value|
24
- write_attribute(attribute, value.as_json)
24
+ write_attribute(column, value.as_json)
25
25
  end
26
+ end
26
27
 
28
+ def acts_as_accepts_nested_attributes_for(attribute, _options = {})
27
29
  define_method("#{attribute}_attributes=".to_sym) do |associates|
28
- write_attribute(attribute, associates.values)
30
+ writeable_associates = associates.values.map do |associate|
31
+ associate.except('_destroy') unless associate['_destroy'].present?
32
+ end.compact
33
+
34
+ public_send("#{attribute}=".to_sym, writeable_associates)
29
35
  end
30
36
  end
31
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_has_many
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pralish Kayastha
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-22 00:00:00.000000000 Z
11
+ date: 2023-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,14 +16,112 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
19
+ version: '6.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 3.0.0
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: appraisal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.1'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coveralls
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3'
111
+ - !ruby/object:Gem::Dependency
112
+ name: sqlite3
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
27
125
  description: acts_as_has_many is a gem that makes it easy to work with JSONB arrays
28
126
  as Active Record associations in your Ruby on Rails applications. It simplifies
29
127
  nested form handling.
@@ -33,14 +131,13 @@ executables: []
33
131
  extensions: []
34
132
  extra_rdoc_files: []
35
133
  files:
134
+ - ".rspec"
36
135
  - CHANGELOG.md
37
136
  - CODE_OF_CONDUCT.md
38
137
  - Gemfile
39
- - Gemfile.lock
40
138
  - LICENSE.txt
41
139
  - README.md
42
140
  - Rakefile
43
- - acts_as_has_many-0.1.0.gem
44
141
  - lib/acts_as_has_many.rb
45
142
  - lib/acts_as_has_many/version.rb
46
143
  - sig/acts_as_has_many.rbs
data/Gemfile.lock DELETED
@@ -1,38 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- acts_as_has_many (0.1.0)
5
- activerecord (>= 3.0.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activemodel (6.1.7.6)
11
- activesupport (= 6.1.7.6)
12
- activerecord (6.1.7.6)
13
- activemodel (= 6.1.7.6)
14
- activesupport (= 6.1.7.6)
15
- activesupport (6.1.7.6)
16
- concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 1.6, < 2)
18
- minitest (>= 5.1)
19
- tzinfo (~> 2.0)
20
- zeitwerk (~> 2.3)
21
- concurrent-ruby (1.2.2)
22
- i18n (1.14.1)
23
- concurrent-ruby (~> 1.0)
24
- minitest (5.20.0)
25
- rake (13.0.6)
26
- tzinfo (2.0.6)
27
- concurrent-ruby (~> 1.0)
28
- zeitwerk (2.6.12)
29
-
30
- PLATFORMS
31
- arm64-darwin-22
32
-
33
- DEPENDENCIES
34
- acts_as_has_many!
35
- rake (~> 13.0)
36
-
37
- BUNDLED WITH
38
- 2.3.26
Binary file