In our last post, we discussed simple Sequel models. In this post, we'll talk about and show some more complex models using a many_to_one / one_to_many relationship. Here, we're going to revisit the countries we used earlier and add cities to the countries. In this case a country can have many cities, but a city will belong to only a single country. Other examples of this many_to_one / one_to_many
概要MySQLで文字列を検索対象にした場合、一般的なデフォルト設定では大文字・小文字を区別しない。この問題にしっかりハマってしまったので、調査と対策を行ったメモを晒すことにした。 基本的なことがらなのにものすごく長いので「ダイジェスト」を読んでいただければおおむねOKにしてある。検証過程に興味のある方はその続きをどうぞ。 ダイジェストMySQLはデフォルトで運用すると文字列の比較 / 並び替えで大文字 / 小文字を区別しない。 大文字小文字を区別して検索するには… テーブル単位カラム単位クエリ単位…での対応が可能。 データ定義テーブル単位 -- CREATE TABLE時にテーブルのデフォルト文字コードと照合順序を指定する CREATE TABLE hoge1 ( id INTEGER PRIMARY KEY AUTO_INCREMENT, str VARCHAR(16) ) ENGINE
Open a database require 'rubygems' require 'sequel' DB = Sequel.sqlite 'my_blog.db' DB = Sequel.connect('postgres://user:password@localhost/my_db') DB = Sequel.mysql 'my_db', :user => 'user', :password => 'password', :host => 'localhost' DB = Sequel.ado 'mydb' Open an SQLite memory database Without a filename argument, the sqlite adapter will setup a new sqlite database in RAM. DB = Sequel.sqlite
Migrations This guide is based on guides.rubyonrails.org/migrations.html Overview Migrations make it easy to alter your database’s schema in a systematic manner. They make it easier to coordinate with other developers and make sure that all developers are using the same database schema. Migrations are optional, you don’t have to use them. You can always just create the necessary database structure
下記のページを参考にSequelの使い方を勉強する。 README.rdoc Sequelの簡単な使い方 例文に自分なりの解説を追加すると下記のようになった。 require 'rubygems' require 'sequel' DB = Sequel.sqlite # メモリ上のデータベースにアクセスするオブジェクト「DB」を作成 # itemsというテーブルを作成。 DB.create_table :items do primary_key :id # プライマリキーとなるInt型の列「id」を作成 String :name # String型の列「name」を作成 Float :price # Float型の列「price」を作成 end items = DB[:items] # テーブル「items」にアクセスするオブジェクトを作成 # テーブル「items」にレコードを挿入 i
Sequelで、モデルの更新時に自動で更新日時を挿入するには、Timestampsプラグインを使う。あらかじめ、created_at, updated_atカラムを作成しておいて、モデルのなかでプラグインを呼び出す。型はdatetimeで作成する。 使い方はこんなかんじ。 class Item < Sequel::Model(:items) plugin :timestamps, :update_on_create => true end :updated_on_createは、モデルの作成時にもupdated_atを更新するオプション。 Rdoc Sequel::Plugins::Timestamps
Rubyにおける軽量なデータベースツールキットとして、なかなかお手軽なSequelですが、実際に使うにあたっていくつか悩んだポイントがあったので、備忘録としてその解決法をメモしておきます。 なお、この記事はRuby 1.9.1p378とSequel 3.8.0の組み合わせを対象として書いています。 モデルの定義前にDB接続をしたくない SequelにもActiveRecordパターンに基づいたモデルの仕組みが用意されていますが、「モデルを定義した時点でデータベースへの接続が存在していなければならない」という制約があります。 つまり、 require 'sequel' Sequel.connect('sqlite://test.db') class User < Sequel::Model; end p User.all は動きますが、 require 'sequel' class User
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く