Shotengai

Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file lib/shotengai. To experiment with that code, run bin/console for an interactive prompt.

TODO: Delete this and the text above, and describe your gem

Installation

Add this line to your application's Gemfile:

gem 'shotengai'

And then execute:

$ bundle

Or install it yourself as:

$ gem install shotengai

Rails Generators

Migration Generator

    $ rails g shotengai:migrations

Model Generator:

    # options:
    #   --product           custom your own product class
    #   --order            custom your own order class

For example:

    $ rails g shotengai:models --product MyProduct --order MyOrder
This will create several model files:
    create  app/models/my_product.rb
    create  app/models/my_product_series.rb
    create  app/models/my_product_snapshot.rb
    create  app/models/my_order.rb
    create  app/models/my_catalog.rb

Controller & Routes Generator:

    # attr: 
    #   role ( merchant | customer )
    # options:
    #   -n, --namespace    add the namespec folder, default nil.
    #   --product          custom your own product class, default Product
    #   --order            custom your own order class, default Order

For example:

    $ rails g shotengai:controllers merchant -n my_merchant --product MyProduct --order MyOrder

This will create serveral controller classes inherited from merchant product and order class, and add routes to your config/routes.rb.

For example:
    app/controllers/store/product_controller.rb like this:

    class Store::MyProductsController < Shotengai::Merchant::ProductsController
    content...
    end

Views Generator:

    $ rails g shotengai:views -f

This will copy shotengai example views to your application under 'app/views/shotengai/'.

Methods

Buy Product with Order

Use methods in buyer model with series_id: Add into cart:

        # snapshot_params = params.require(:snapshot).permit(
        #   :shotengai_series_id, :count, # .. and so on
        # )
        @user.add_to_order_cart(snapshot_params)
Create order by series_id immediately:
        @user.buy_it_immediately(snapshot_params, order_params)
You can also use methods in order model here by adding params like 
    { incr_snapshot_ids: [1, 2, 3] } 

Or use methods in order model with snapshot_id Add snapshots into order:

    Order.create.incr_snapshot_ids= [ some_snapshot_ids ]
Add snapshots into cart (a new snapshot or snapshots in order unpaid):
    Order.create.gone_snapshot_ids= [ some_snapshot_ids ]

Development

After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/shotengai. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.