render_json_rails 0.1.6 → 0.1.7

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: 91137440ff0206a13f4dc35e08b5978dfca32f05efe8a46f057df54ea5e090ad
4
- data.tar.gz: 7552a89149c3407ccd6706681f61b96f91d04740c594f37cc3a587998fabc882
3
+ metadata.gz: 1dc319274e2045a7c895ce17f4d43cfafa0029a67becb6f54f61edb46d659d53
4
+ data.tar.gz: 6cd8e4556b08a9c6aee0a610773527523e24f2533c4d0b6f2b8020ffeb062918
5
5
  SHA512:
6
- metadata.gz: 2574a769223d9deee3a85c227e1a21e3886a4337b1b7d00a925b900c09aea4ecb9c3bdd49e9f5db22f877f5d41b9747114690d17164e7efc56b7d821c9aa85d3
7
- data.tar.gz: 6b8e57f7029b37ce70dbf0f2bcfe6a03a7b1f281bea6ad560561b8d18937a226a96559fffface5fe51fced650f5fe95bf0af84f8c25f95127f04e3a74ec5d488
6
+ metadata.gz: 7480441de90996af3a76fec81114064ff9fc2d6a8212c70741cdf7a0f313560d34ecf06d5b89f76ec892a4edcef63c600cbde57681f041a1daf21176badbf283
7
+ data.tar.gz: c22575b485b96b885c30c127f94d95f829d4bb00911f5d0c9638c97dc6d49129387836e8c837c0f6dec5eb3b932e0491729c3398f5c6afeadfa607dfaa9e66b5
data/README.md CHANGED
@@ -9,9 +9,9 @@ Dzięki temu łatwo jest stworzyć backend Json API np. do pracy z Reactem lub V
9
9
 
10
10
  class Team < ActiveRecord::Base
11
11
  has_many :users
12
-
12
+
13
13
  include RenderJsonRails::Concern
14
-
14
+
15
15
  render_json_config name: :team,
16
16
  includes: {
17
17
  users: User
@@ -20,9 +20,9 @@ end
20
20
 
21
21
  class User < ActiveRecord::Base
22
22
  belongs_to :team
23
-
23
+
24
24
  include RenderJsonRails::Concern
25
-
25
+
26
26
  render_json_config name: :user,
27
27
  includes: {
28
28
  team: Team
@@ -34,7 +34,7 @@ Dodajemy też w kontrolerze ```teams_controller.rb```
34
34
 
35
35
  ```ruby
36
36
  include RenderJsonRails::Helper
37
-
37
+
38
38
  def index
39
39
  @team = Team.all
40
40
  respond_to do |format|
@@ -42,8 +42,8 @@ Dodajemy też w kontrolerze ```teams_controller.rb```
42
42
  format.json { render_json @team }
43
43
  end
44
44
  end
45
- ```
46
-
45
+ ```
46
+
47
47
  i możemy już otrzymać JSON team-u wraz z userami
48
48
 
49
49
  ```html
@@ -65,13 +65,13 @@ http://example.text/teams/1.json?fields[team]=name,description&fields[user]=emai
65
65
  ## Pełny opis ```render_json_config```
66
66
 
67
67
  ```ruby
68
- render_json_config name: :team,
68
+ render_json_config name: :team,
69
69
  except: [:account_id, :config], # tych pól nie będzie w json-ie
70
- methods: [:image], # te metody zostaną dołączone
70
+ methods: [:image], # te metody zostaną dołączone
71
71
  allowed_methods: [:members], # te metody mogą być dodane przez parametr fileds np: fields[team]=id,members
72
72
  includes: { # to mozna dołączać za pomoca parametru include np include=users,category
73
73
  users: Users,
74
- cateogry: Category
74
+ category: Category
75
75
  }
76
76
  ```
77
77
 
@@ -91,6 +91,13 @@ Or install it yourself as:
91
91
 
92
92
  $ gem install render_json_rails
93
93
 
94
+ ## Tests
95
+
96
+ ```
97
+ rake test
98
+ ```
99
+
100
+
94
101
  ## Contributing
95
102
 
96
103
  Bug reports and pull requests are welcome on GitHub at https://github.com/intum/render_json_rails.
data/Rakefile CHANGED
@@ -1,5 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rake/testtask"
3
+ # require 'active_support/core_ext/object/blank'
4
+ # require 'active_support'
3
5
 
4
6
  Rake::TestTask.new(:test) do |t|
5
7
  t.libs << "test"
@@ -24,10 +24,13 @@ module RenderJsonRails
24
24
 
25
25
  options = {}
26
26
  if fields && fields[name].present?
27
- options[:only] = fields[name].split(',').find_all { |el| !except.include?(el.to_sym) }
28
- options[:methods] = methods&.find_all { |el| options[:only].include?(el.to_s) }
27
+ options[:only] = fields[name].split(',').map{ |e| e.to_s.strip.to_sym }.find_all { |el| !except.include?(el) }
28
+ options[:methods] = methods&.find_all { |el| options[:only].include?(el) }
29
29
  if allowed_methods
30
- options[:methods] = (options[:methods] || []) | allowed_methods.find_all { |el| options[:only].include?(el.to_s) }
30
+ options[:methods] = (options[:methods] || []) | allowed_methods.find_all { |el| options[:only].include?(el) }
31
+ end
32
+ if options[:methods].present? && options[:only].present?
33
+ options[:methods].each { |method| options[:only].delete(method) }
31
34
  end
32
35
  else
33
36
  options[:except] = except
@@ -43,8 +46,15 @@ module RenderJsonRails
43
46
  def render_json_options(includes: nil, fields: nil, additional_config: nil)
44
47
  raise "należy skonfigurowac render_json metodą: render_json_config" if !defined?(@render_json_config)
45
48
 
49
+ name = @render_json_config[:name].to_s
50
+
51
+ if (fields.blank? || fields[name].blank?) && @render_json_config[:default_fields].present?
52
+ fields ||= {}
53
+ fields[name] = @render_json_config[:default_fields].join(',')
54
+ end
55
+
46
56
  options = default_json_options(
47
- name: @render_json_config[:name].to_s,
57
+ name: name,
48
58
  fields: fields,
49
59
  except: @render_json_config[:except],
50
60
  methods: @render_json_config[:methods],
@@ -64,6 +74,9 @@ module RenderJsonRails
64
74
  end
65
75
 
66
76
  options = RenderJsonRails::Concern.deep_meld(options, additional_config) if additional_config
77
+
78
+ options.delete(:methods) if options[:methods].blank?
79
+
67
80
  options
68
81
  end # render_json_options
69
82
  end # class_methods
@@ -1,3 +1,3 @@
1
1
  module RenderJsonRails
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
@@ -26,4 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.bindir = "exe"
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
+ spec.add_development_dependency "activesupport"
30
+ spec.add_development_dependency "byebug"
29
31
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render_json_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-16 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2020-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  description: render json with 'includes' and 'fields' with simple config
14
42
  email:
15
43
  - marcin@radgost.com