Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

ActiveRecord単独の使い方覚書

自分用チートシート

DBにsqlite3を使った例

DBディレクトリ

を作成し、DDL文をschema.sqlite3.sqlの名前で作成 created_at、updated_atのフィールド名は、自動的に作成・更新日時が格納されるフィールドとなる。

Gemfile

activerecord , sqlite3のgemを登録

アプリケーション本体(sinatra

  • でactive_recordをrequireし、
  • congifure ブロックにdb接続処理を書く。

db_path = DBのパス
ActiveRecord::Base.establish_connection(
adapter: ‘sqlite3’,
databese: db_path
)

モデルの作成

モデル毎にファイル(クラス)を作成 active_recordをrequire ActiveRecord::Baseを継承したclassがモデル。例えば、クラス名に対応する小文字複数形(Book <=> books)のテーブル名が自動的に関連付けされる。

アプリケーション本体(sinatra)

モデルのクラスをrequireする。相対パス指定のrequrei_relativeが良い。 require_relative ‘model/book'

モデルへの操作

は、継承したSQL命令っぽいクラスメソッドを使用する。

  • .create!(フィールド名: データ) (=insert)
  • .all (= selec tall)
  • .find()
  • .first (= select top1) *.find_by(フィールド名 => 検索値) (条件に当てはまる最初のレコード1つを返す)
  • .last (= select top1 desc)
  • .wheer(:フィールド名 => 条件値) (= where句)
  • .wheer(:フィールド名 => [範囲演算子]) (= select between )
  • .wheer(:フィールド名 => [配列]) (= select in句 )
  • インスタンス.update_attribute(:フィールド名 , 新しい値) ( インスタンスのデータ群に対してupdate句)
  • インスタンス.destory (インスタンスのデータに対してdelete句)
  • インスタンス.destory_all (インスタンスのデータ群に対してdelete句)