crud_resource 0.1.1

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/crud_resource.rb +78 -0
  3. metadata +44 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 40a3f63d0cac5b14e85dbe26175b8b29590a9099712ca31b71f6cd3a1fb6d337
4
+ data.tar.gz: ca3d97b21952db298272c302faff655de5e54e4f1e58cbf407725bf93e34567e
5
+ SHA512:
6
+ metadata.gz: 503c3f688be8f01e0d977648564738c5f153005460074af1acc878c7105b608aa5e8e5e0451f335f8b52ed11fd96523fdba1bb46f28b31c2f1beb2144140af99
7
+ data.tar.gz: fe0dd40e3788ca4be6484d465dce31748cee92402a8c2f2e1e21e64a8af18f35d877b7690abb6394026c9c990c9eddcb3b0b400b7c2cc50047af2fd0b38958ca
@@ -0,0 +1,78 @@
1
+ module Concerns::CrudResource
2
+ extend ActiveSupport::Concern
3
+
4
+ included do
5
+ before_action :find_resource, only: [:show, :update, :edit, :destroy]
6
+ end
7
+
8
+ def index
9
+ @resources = resource_scope.all
10
+ end
11
+
12
+ def new
13
+ @resource = resource_scope.new
14
+ end
15
+
16
+ def create
17
+ @resource = resource_scope.new(resource_params)
18
+ if @resource.save
19
+ flash[:notice] = after_create_notice
20
+ redirect_to resources_path
21
+ else
22
+ render :new
23
+ end
24
+ end
25
+
26
+ def edit
27
+ end
28
+
29
+ def update
30
+ if @resource.update resource_params
31
+ flash[:notice] = after_update_notice
32
+ redirect_to resources_path
33
+ else
34
+ render :edit
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def resource_scope
41
+ 'Abstract Resource'
42
+ end
43
+
44
+ def resource_symbol
45
+ resource_scope.to_s.underscore.to_sym
46
+ end
47
+
48
+ def permitted_params
49
+ []
50
+ end
51
+
52
+ def resource_params
53
+ params.require(resource_symbol).permit(permitted_params)
54
+ end
55
+
56
+ def resources_path
57
+ url_for([:admin, resource_scope])
58
+ end
59
+
60
+ def resource
61
+ @resource ||= find_resource
62
+ end
63
+
64
+ def find_resource
65
+ @resource ||= resource_scope.find params[:id]
66
+ end
67
+
68
+ def after_update_notice
69
+ "#{resource_scope.model_name.human} успешно #{resource_sex ? 'сохранен' : 'сохранена'}."
70
+ end
71
+
72
+ def after_create_notice
73
+ "#{resource_scope.model_name.human} успешно #{resource_sex ? 'добавлен' : 'добавлена'}."
74
+ end
75
+
76
+ def resource_sex() true end
77
+
78
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: crud_resource
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Alexander Spitsyn
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-10-06 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: sanspits@yandex.ru
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/crud_resource.rb
20
+ homepage: https://github.com/Spitsman/crud_resource
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.7.9
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: Crud Resource for Rails controllers
44
+ test_files: []