Skip to content
hidenba edited this page Apr 14, 2012 · 7 revisions

Columnの定義

[name,address,phone,email]というフォーマットのCSVの場合 CSVヘッダのカラムと同一名称でカラムを定義することができるようになる

require 'millionaire'
class Smaple
  include Millionaire::Csv

  column :name, presence: true, index:true
  column :address, length: 100
  column :phone
  column :email
end

CSVデータの読み込み

.loadメソッドにioオブジェクトを渡すことでCSVをロード

Sample.load(File.open file_path)

レコードの検索

.all すべてのレコードを取得

samples = Sample.all
samples.class.name   => Array

.first 最初のレコードを取得

sample = Sample.first

.last 最後のレコードを取得

sample = Sample.last

.find 指定した任意の行レコードを取得

sample = Sample.find 10

.where カラムを対象に検索を行う

単一カラムを対象とした検索

samples = Sample.where(address: 'tokyo')

複数カラムを対象とした検索

samples = Sample.where(address: 'tokyo', name 'arice')

単一カラムで複数の値で検索

samples = Sample.where(address: ['tokyo','kyoto'])

validation

presence validator

column :name, pressence: true

length validator

column :name, length: 20

Inclution validator

column :name, value: %w(aice bob chrice)

Integer Inclutioon

column :name, integer: true, value: 100..200

constraint

column :name, constraint: {format: {with: /\A[a-zA-Z]+\z/}}

uniq

column :name, uniq: true

index

column :name, index: true
index :name, [:name, :adress]