iT邦幫忙

DAY 22
0

Rails. Really, I love study.系列 第 22

枚舉。

"魔法數字 0、1、2 ⋯⋯"

很多時候,會在資料庫存入魔法數字0、1、2、⋯⋯來代表某種狀態或事物
例如開了一個 gender 的欄位,資料類型是 string,分別存 female 跟 male 兩種字串
但也可以資料類型是 integer,存 0 與 1 兩種數字
如果捉出數字是 0,就代表是 male ,如果數字是 1,就代表是 female
不過寫到最後,常常到最後會不了解 0 與 1 代表什麼意義
這裡來介紹這樣一個 gem
網址如下
https://github.com/lwe/simple_enum

首先

Gemfile

source 'https://rubygems.org'

gem 'faker'
gem 'font-awesome-sass', '~> 4.2.0'
gem 'bootstrap-sass'
gem 'annotate'
gem 'simple_enum', '~> 2.0.0' , require: 'simple_enum/mongoid'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'





bundle





rails s

去 girb 開一個欄位 level 來

rails g migration add_level_cd_to_girb





db/migrate/xxxxxxxxxxxxxx_add_level_to_girb.rb

class AddLevelCdToGirb < ActiveRecord::Migration
  def change
    add_column :girbs, :level_cd, :integer
  end
end





rake db:migrate





app/models/girb.rb

# == Schema Information
#
# Table name: girbs
#
#  id         :integer          not null, primary key
#  name       :string(255)
#  created_at :datetime
#  updated_at :datetime
#  like       :integer          default(0)
#  email      :string(255)
#

class Girb < ActiveRecord::Base
  has_many :bangs, dependent: :destroy
  has_many :comments, dependent: :destroy

  as_enum :level, dead: 0, successful: 1, famous: 2, working: 3, average: 4, amateur: 5, unknown: 6, bad: 7

  def self.search(query)
    where("name like ?", "%#{query}%")
  end


end

利用種子快速生成資料

db/seeds.rb

Girb.delete_all
168.times do
  Girb.create(
    name: Faker::Name.name,
    email: Faker::Internet.email,
    like: rand(0..1000),
    level_cd: rand(0..7)
    )  
end





rake db:seed

使用 Rails console 來實際操作一下吧


上一篇
友善。
下一篇
等級。
系列文
Rails. Really, I love study.30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言