タグ

sinatraとActiveRecordに関するdropcontrolのブックマーク (4)

  • SinatraからActiveRecord 3を使う(4) 比較演算が簡単になるMetaWhere - アインシュタインの電話番号

    前回のバリデーションに引き続き、今回はActiveRecord 3を使った際のwhereメソッド内での比較演算が簡単になるgemのMetaWhereについて調べたのでメモ。ぶっちゃけ今回はSinatraはあんまり関係なくて、ActiveRecord 3の使い方が便利になる話。 お題 updated_atカラムの中で、今から1時間前よりも古い日時のレコードだけ抽出せよ このお題をクリアするためのActiveRecord 3のwhereメソッドの書き方がよくわからなかった。というか、今もわかってない。たぶんSQL文を直接書いて「updated_at < 1時間前の数値」的な感じで書くんだろうけど…と調べているときに、タイトルにもある通りの比較演算が簡単になるMetaWhereの存在を知ってしまった。ので、whereでの書き方がよく分からないまま、このgemを使って解決した。 比較演算が簡単にな

    SinatraからActiveRecord 3を使う(4) 比較演算が簡単になるMetaWhere - アインシュタインの電話番号
  • SinatraからActiveRecord 3を使う(3) バリデーション - アインシュタインの電話番号

    前回のCRUD操作に引き続き、今回はSinatraからActiveRecord 3を使った際の入力した値のバリデーション(検証)について調べたのでメモ。 バリデーションを行うには、モデルクラスにその行いたいバリデーション用のメソッドと対象のカラムをシンボル名で記述する。バリデーションは最初からいくつかのパターンが組み込まれていて、その記述は基的に以下のような書式になる。 validates_バリデーションする方法名_of バリデーション対象のカラムのシンボル名 たとえば、ユーザー名がかぶらない(ユニーク)な状態にしたいのであれば、 validates_uniqueness_of :user のような感じになる。組み込みで用意されているバリデーションの一覧については、こちらの記事が詳しい。実際に、前回までに作ったカウントするだけのSinatraアプリをベースにして、例えば以下のような感じで

    SinatraからActiveRecord 3を使う(3) バリデーション - アインシュタインの電話番号
  • SinatraからActiveRecord 3を使う(2) CRUD操作 - アインシュタインの電話番号

    前回のマイグレーションからの続きで、今回はSinatraからActiveRecord 3を使ってCRUD操作をしてみる。といっても、おそらくCRUD操作についてはRailsで使う場合とSinatraとではほとんど違いはないと思われる。前回同様、ActiveRecord 3自体の使い方はこの記事がとてもわかりやすかったので全面的に参考にしている。 モデル ActiveRecordを使ってDBのCRUD操作をする場合、ActiveRecord::Baseを派生させた1つのクラスがDBの1テーブルに対応し、そのクラスの属性がテーブルの各カラムに対応することになる。このクラスのことを一般的に「モデル」と呼ぶ。Railsでは、Railsアプリを生成した段階でMVC別にフォルダが用意されているので、modelフォルダにこのActiveRecord::Base派生クラスを作るんだけど、Sinatraでは

    SinatraからActiveRecord 3を使う(2) CRUD操作 - アインシュタインの電話番号
  • SinatraからActiveRecord 3を使う(1) マイグレーション - アインシュタインの電話番号

    以前SinatraからDataMapperを使う記事を書いたけど、今回はSinatraのO/Rマッパー部分にActiveRecord 3を使ってみる。ActiveRecord 3自体の使い方については、この記事がすごくわかりやすかった。 Sinatraアプリに必要なファイルを用意する まずは、Sinatraアプリを実行するのに必要な最低限のファイル群(Gemfile, config.ru, app.rb)を作成する。今回は基的にすべてBundler経由で操作するので、システム側にBundlerのgemがインストールされている必要がある。 Gemfile 今回使用するgemはこんな感じ。とりあえずSinatraでActiveRecord 3を使う場合はactiverecordとsinatra-activerecordとsqlite3が必要で、今回使ったバージョンはそれぞれ、3.0.6、0.

    SinatraからActiveRecord 3を使う(1) マイグレーション - アインシュタインの電話番号
  • 1