Step.03 註冊系統與產品圖片 - Azraeil/JCcart_Note GitHub Wiki

註冊系統 devise

使用devise這個gem,devise GitHub

先在我們的專案裝好devise

rails g devise:install

接著我們需要devise的User model以及Manager model

rails g devise User  
rails g devise Manager

接著去修改XXXXXXX_devise_create_users.rb,JC解釋了這些功能,然後把Recoverable、Rememberable、Trackable、Confirmable、Lockable,以及下面這行都註解掉沒使用它們

db/migrate/20160906083955_devise_create_users.rb

  # add_index :users, :reset_password_token, unique: true

接著去修改XXXXXXX_devise_create_manager.rb,一樣關掉上面那些東西。

然後rake db:migrate

建立shop的table

rails g migration init_shop

add to migrate/XXXXXX_init_shop.rb

class InitShop < ActiveRecord::Migration
  def change
    create_table :cates do |t|
      t.string :name
      t.integer :position
      t.timestamps
    end

    create_table :items do |t|
      t.integer :status, :limit => 1, :default => 0, :null => false
      t.string :name
      t.integer :price
      t.text :descript
      t.timestamps
      t.timestamp :delete_at #當你刪掉一筆訂單時,你並不是真正刪掉,只是讓數字少1,他會保留你原始的資料,方便你追帳
    end

    create_table :orders do |t|
      t.integer :user_id
      t.timestamps
      t.integer :status, :limit => 1, :null => false, :default => 0
      t.integer :total, :default => 0, :null => false
    end

    create_table :order_items do |t|
      t.integer :order_id, :null => false
      t.integer :item_id, :null => false
      t.integer :user_id, :null => false
      t.integer :price, :null => false
    end
    add_index :order_items, [:order_id] #所有可能用到WHERE的都要加到add_index裡去
  end
end
待補充:要解釋這些table

然後rake db:migrate


### 產品圖片:paperclip

使用paperclip github

brew install imagemagick

裝完後可以用convert --help這指令問ImageMagick有什麼東西可以用

接著去Gemfile加入ImageMagickgem "paperclip", "~> 5.0.0",由於我們剛剛已經裝過,所以這行可省略

然後JC解釋了paperclip github,Migration 的部分

rails g migration add_item_cover

然後把XXXXXXX_add_item_cover.rb修改成paperclip github,Migration 的寫法

db/migrate/20160906094234_add_item_cover.rb

class AddItemCover < ActiveRecord::Migration
  def up
    add_attachment :items, :cover
  end

  def down
    remove_attachment :items, :cover
  end
end

然後再一次rake db:migrate

⚠️ **GitHub.com Fallback** ⚠️