Class: RailsApiBase::BaseController
- Inherits:
-
ActionController::API
- Object
- ActionController::API
- RailsApiBase::BaseController
show all
- Includes:
- BlueprintOptionsSupport, Queryable
- Defined in:
- app/controllers/rails_api_base/base_controller.rb
Constant Summary
Constants included
from Queryable
Queryable::DEFAULT_CONFIG
Instance Method Summary
collapse
#blueprint_options
Instance Method Details
#after_create(resource) ⇒ Object
81
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 81
def after_create(resource); end
|
#after_save(resource) ⇒ Object
75
76
77
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 75
def after_save(resource)
action_name == "create" ? after_create(resource) : after_update(resource)
end
|
#after_update(resource) ⇒ Object
84
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 84
def after_update(resource); end
|
#before_create(resource) ⇒ Object
80
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 80
def before_create(resource); true; end
|
#before_save(resource) ⇒ Object
可选:通用钩子(默认调用 create/update 钩子)===
71
72
73
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 71
def before_save(resource)
action_name == "create" ? before_create(resource) : before_update(resource)
end
|
#before_update(resource) ⇒ Object
83
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 83
def before_update(resource); true; end
|
#create ⇒ Object
49
50
51
52
53
54
55
56
57
58
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 49
def create
resource = resource_class.new(resource_params)
if before_save(resource) && resource.save
after_save(resource)
data = serialize_resource(resource)
render_success(data, status: :created, message: "Created successfully")
else
render_error(message: "Validation failed", errors: resource.errors.full_messages)
end
end
|
#destroy ⇒ Object
86
87
88
89
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 86
def destroy
resource.destroy
render_success(nil, message: "Deleted successfully")
end
|
#index ⇒ Object
35
36
37
38
39
40
41
42
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 35
def index
result = apply_query_with_meta(collection)
data = {
query_config[:meta][:rows_key] => serialize_collection(result[:collection]),
}
data.merge!(result[:meta]) if result[:meta]
render_success(data)
end
|
#render_error(message: "Unprocessable Entity", status: :unprocessable_entity, errors: nil) ⇒ Object
17
18
19
20
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 17
def render_error(message: "Unprocessable Entity", status: :unprocessable_entity, errors: nil)
code = response_code_for(action_name, status: status)
render json: { code: code, msg: message, errors: errors }, status: status
end
|
#render_success(data, status: :ok, message: "success", code: nil) ⇒ Object
11
12
13
14
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 11
def render_success(data, status: :ok, message: "success", code: nil)
code ||= response_code_for(action_name, status: status)
render json: { code: code, msg: message, data: data }, status: status
end
|
#response_code_for(action, **context) ⇒ Object
23
24
25
26
27
28
29
30
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 23
def response_code_for(action, **context)
status = context[:status] || :ok
if status.is_a?(Integer)
status
else
Rack::Utils::SYMBOL_TO_STATUS_CODE.fetch(status, 200)
end
end
|
#show ⇒ Object
44
45
46
47
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 44
def show
data = serialize_resource(resource)
render_success(data)
end
|
#update ⇒ Object
60
61
62
63
64
65
66
67
68
|
# File 'app/controllers/rails_api_base/base_controller.rb', line 60
def update
if before_save(resource) && resource.update(resource_params)
after_save(resource)
data = serialize_resource(resource)
render_success(data, message: "Updated successfully")
else
render_error(message: "Validation failed", errors: resource.errors.full_messages)
end
end
|