Git Product home page Git Product logo

ec_sample's Introduction

EC Sample

概要

楽天APIを用いたECサイト風のサイト(購入機能はなし)

言語とライブラリ

ruby (2.5.0)
rails (5.1.7)

'devise' # ログイン機能
'rails_admin' # 管理者画面
'cancancan' # 管理者権限
'dotenv-rails' # 環境変数管理
'rakuten_web_service' # 楽天API

ec_sample's People

Contributors

masafumikabe avatar

Watchers

James Cloos avatar

ec_sample's Issues

管理画面の実装

gemのインストール

  • gem 'rails_admin'
  • gem 'cancancan'
  • bundle install

管理画面の作成

  • rails g rails_admin:install

管理者権限の設定

  • rails g cancan:ability
  • models/ability.rbの編集
  • config/initializers/rails_admin.rbの編集

登録済みユーザに管理者権限を付与

  • usersテーブルにadminカラムを追加
  • 権限を付与したいユーザのadminカラムにtrueを代入
  • 管理者ログイン時のみ /adminへのリンクを表示
    views/layouts/_navbar.html.erb

Wantモデルの設定

Wantモデルの作成

  • rails g model Want --parent=Ownership

Userモデルの設定

  • has_many :wants
  • has_many :want_items, through: :wants, source: :item
  • want, unwant, want?
    app/models/user.rb

Itemモデルの設定

  • has_many :wants
  • has_many :want_users, through: :wants, source: :user

router

  • resources :items, only: [:show, :new]
  • resources :ownerships, only: [:create, :destroy]

controller

  • rails g controller ownerships create destroy
  • ownerships_controller.rbの編集

viewの編集

  • app/views/ownerships/_want_button.html.erb
  • app/views/items/_items.html.erb_want_buttonの追加
  • app/views/toppages/index.html.erbにwantしたitemを表示
  • app/views/users/show.html.erbにwantしたitemを表示
  • app/views/items/show.html.erbの作成

Cartモデルの設定

Cartモデルの作成

  • rails g model Cart --parent=Ownership

Userモデルの設定

  • has_many :carts
  • has_many :cart_items, through: :carts, source: :item
  • cart, uncart, cart?
    app/models/user.rb

Itemモデルの設定

  • has_many :carts
  • has_many :cart_users, through: :carts, source: :user

router

  • get 'users/:id/cart', to: 'users#cart', as: 'cart'

controller

  • ownerships_controller.rbの編集

viewの編集

  • app/views/ownerships/_cart_button.html.erb
  • app/views/items/_items.html.erb_cart_buttonの追加
  • app/views/users/cart.html.erbにcartしたitemを表示

Ownershipモデルの設定

Ownershipモデルの作成

  • rails g model ownership type:string user:references item:references
  • t.index [:user_id, :item_id , :type], unique: true
    db/migrate/・・・_create_ownerships.rb
  • rails db:migrate

Ownershipモデルの設定

  • belongs_to :user
  • belongs_to :item

Userモデルの設定

  • has_many :ownerships
  • has_many :items, through: :ownerships

Itemモデルの設定

  • has_many :ownerships
  • has_many :users, through: :ownerships

users_controller

users_controllerの作成

  • resources :users, only: [:show]
    config/routes.rb
  • rails g controller users show
  • showにはユーザ詳細を表示

toppageの編集

  • ログインしていないとログイン画面へのリンク表示
  • ログインしているとtoppageを表示
  • toppageにはshow, logoutのリンクを表示

user_signed_in?current_userを活用

楽天APIの実装

Ruby SDKの導入

  • gem 'rakuten_web_service'
  • bundle install

初期設定

  • config/initializers/rakuten_web_service.rbの作成

環境変数の設定

  • gem 'dotenv-rails'
  • bundle install
  • .envを作成しRAKUTEN_APPLICATION_IDを記入
  • .gitignore.envを追加

Itemモデルの設定

Itemモデルの作成

  • rails g model item code:string name:string url:string image_url:string
  • rails db:migrate

バリデーション

  • presence: true, length: { maximum: 255 }

router

  • resources :items, only: [:new]

controller

  • rails g controller items new
  • items_controller.rbの編集

viewの編集

  • app/views/items/new.html.erb
  • app/views/items/_items.html.erb

user情報にnameを追加

usersテーブルにnameカラムを追加

  • rails g migration AddNameToUsers name:string
  • rails db:migrate

Signup画面に名前を入力できる欄を追加する

  • app/views/devise/registrations/new.html.erb

ストロングパラメータで名前を保存できるようにする

  • configure_permitted_parametersメソッド

toppageに名前を表示

  • app/views/toppages/index.html.erb

deviseの導入

deviseのインストール

  • gem 'devise'
  • bundle install

deviseの設定

  • rails g devise:install
  • deviseのviewを生成 (rails g devise:views)

トップページの作成

router

  • root to: 'toppages#index'
    config/routes.rb

controller

  • rails g controller toppages index

view

  • app/views/layouts/application.html.erb
  • app/views/layouts/_flash_messages.html.erb
  • app/views/layouts/_navbar.html.erb
  • app/views/toppages/index.html.erb

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.