Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
shotengai
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open-source
shotengai
Commits
fc40c834
Commit
fc40c834
authored
Aug 25, 2017
by
ivan Lan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Shotengai::Controller::Base & Add some controller
parent
a8975486
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
88 additions
and
44 deletions
+88
-44
shotengai.rb
lib/shotengai.rb
+12
-2
base.rb
lib/shotengai/controllers/base.rb
+16
-1
orders_controller.rb
lib/shotengai/controllers/merchant/orders_controller.rb
+9
-0
product_series_controller.rb
...otengai/controllers/merchant/product_series_controller.rb
+26
-0
product_snapshots_controller.rb
...ngai/controllers/merchant/product_snapshots_controller.rb
+9
-0
products_controller.rb
lib/shotengai/controllers/merchant/products_controller.rb
+16
-41
No files found.
lib/shotengai.rb
View file @
fc40c834
require
"shotengai/version"
require
'rails'
#
require 'active_record'
require
'active_record'
module
Shotengai
# Your code goes here...
autoload
:Product
,
'shotengai/product'
autoload
:Series
,
'shotengai/series'
autoload
:Snapshot
,
'shotengai/snapshot'
...
...
@@ -16,6 +15,17 @@ module Shotengai
autoload
:Engine
,
'shotengai/engine'
module
Controller
autoload
:Base
,
'shotengai/controllers/base'
module
Merchant
autoload
:ProductsController
,
'shotengai/controllers/merchant/products_controller'
autoload
:ProductSnapshotsController
,
'shotengai/controllers/merchant/product_snapshots_controller'
autoload
:ProductSeriesController
,
'shotengai/controllers/merchant/product_series_controller'
autoload
:OrdersController
,
'shotengai/controllers/merchant/orders_controller'
end
module
Customer
end
end
end
lib/shotengai/controller.rb
→
lib/shotengai/controller
s/base
.rb
View file @
fc40c834
module
Shotengai
class
Controller
<
ApplicationController
module
Controller
class
Base
<
ApplicationController
# The resources of this controller
# ActiveRecord::Relation or ActiveRecord::Base
cattr_accessor
:resources
...
...
@@ -24,6 +25,19 @@ module Shotengai
def
remove_methods
*
method_names
method_names
.
each
{
|
name
|
self
.
remove_method
name
}
end
def
resources
=
klass_name
retries
||=
1
@@resources
=
klass_name
.
constantize
rescue
NameError
# If Product havent been load, ProductSeries or ProductSnapshot would not exists
unless
(
retries
=-
1
)
<
0
klass_name
.
remove
(
'Series'
,
'Snapshot'
).
constantize
retry
else
raise
end
end
end
before_action
:set_resource
,
except:
[
:index
,
:create
]
...
...
@@ -76,4 +90,5 @@ module Shotengai
params
.
requrie
(
resource_key
)
end
end
end
end
lib/shotengai/controllers/merchant/orders_controller.rb
0 → 100644
View file @
fc40c834
module
Shotengai
module
Controller
module
Merchant
class
OrdersController
<
Shotengai
::
Controller
::
Base
end
end
end
end
lib/shotengai/controllers/merchant/product_series_controller.rb
0 → 100644
View file @
fc40c834
module
Shotengai
module
Controller
module
Merchant
class
ProductSeriesController
<
Shotengai
::
Controller
::
Base
self
.
resources
=
'ProductSeries'
self
.
template_dir
=
'shoutengai/merchant/product_series/'
private
def
resource_params
# resource_key = self.resource.model_name.singular.to_sym
# # QUESTION: need these ?
# spec = params.fetch(:spec, nil).try(:permit!)
# datail = params.fetch(:datail, nil).try(:permit!)
# meta = params.fetch(:meta, nil).try(:permit!)
# params.permit(
# :price, :original_price,
# ).merge(
# { spec: spec, detail: detail, meta: meta }
# )
end
end
end
end
end
lib/shotengai/controllers/merchant/product_snapshots_controller.rb
0 → 100644
View file @
fc40c834
module
Shotengai
module
Controller
module
Merchant
class
SnapshotsController
<
Shotengai
::
Controller
::
Base
end
end
end
end
lib/shotengai/controllers/
product
.rb
→
lib/shotengai/controllers/
merchant/products_controller
.rb
View file @
fc40c834
module
Shotengai
module
Controller
class
ProductsMasterController
cattr_accessor
:resource
{
'Product'
}
# 默认值
# respond_with @products, template: "#{self.template_dir}/index"
cattr_accessor
:template_dir
{
'products/'
}
module
Merchant
class
ProductsController
<
Shotengai
::
Controller
::
Base
self
.
resources
=
::
Product
self
.
template_dir
=
'shoutengai/merchant/products/'
class
<<
self
def
resource
=
resource_name
klass
=
Object
.
const_get
resource_name
raise
ArgumentError
.
new
(
'The resource of Product Controller should be a class inherited from Shotengai::Product'
)
unless
Shotengai
::
Product
===
klass
@@resource
=
klass
end
end
before_action
:set_product
,
expect:
[
:index
,
:create
]
respond_to
:json
def
index
@products
=
self
.
resource
.
all
respond_with
@products
,
template:
"
#{
self
.
template_dir
}
/index"
end
def
show
@product
=
self
.
resource
.
find
(
params
[
:id
])
respond_with
@product
,
template:
"
#{
self
.
template_dir
}
/show"
# need series list here
index_query
do
|
resource
|
# params[:catalogs] nil 返回所有
resource
.
tagged_with
(
params
[
:catalogs
])
end
def
create
self
.
resource
.
create!
(
product_params
)
head
201
end
def
update
self
.
resource
.
update!
(
product_params
)
def
put_on_shelf
@resource
.
put_on_shelf!
head
200
end
resource
.
aasm
.
state_machine
.
events
.
map
(
&
:first
).
each
do
|
event
|
define_method
(
event
)
do
@product
.
send
(
"
#{
event
}
!"
)
def
sold_out
@resource
.
sold_out!
head
200
end
end
private
def
set_resource
@product
=
self
.
resource
.
find
(
params
[
:id
])
def
destroy
@resource
.
soft_delete!
head
204
end
def
product_params
private
def
resource_params
resource_key
=
self
.
resource
.
model_name
.
singular
.
to_sym
# QUESTION: need these ?
spec
=
params
.
require
(
resource_key
).
fetch
(
:spec
,
nil
).
try
(
:permit!
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment