旧gaaamiiのブログ

間違ったことを書いている時があります。コメントやTwitter、ブコメなどでご指摘ください

【ドットインストール】”#11 掲示板アプリを作ってみよう”でわかってなかったところとActiveRecordのありがたみ

以前、2日前にドットインストールの「Sinatra入門」完了したけど今main.rb見直したらもう意味分からなかったと書きました。あれからちょっと勉強しなおして、もっかい動画観てます。

Sinatra入門"#11 掲示板アプリを作ってみよう"で、前回見たときはimport.sqlが何者かわからなかったんですが、今見たらすぐわかりました。

命令の文をコンソールから直接書かずにファイルに入れてるだけ

これは「データベースに対する命令(sql文)が書かれたファイル」です。で、bbs.dbというデータベースに対してこれを実行するときに

.read import.sql

とすれば、単純にimport.sqlの中身である

create table comments (
    id integer primary key,
    body text
);

が実行されるというわけです。SQLiteを立ち上げた状態でこれを直で書いても実行されるのは同じです。

ActiveRecordとつないじゃおう

んで、こうしてcommentsテーブルを作っただけで、あとはActiveRecordを使ってRubyのコードからデータベースとのやりとりができるみたいです。

昨日、参考書(作りながら学ぶRuby入門 第2版)の中でも似たようなことをしている場面があったのですが、ActiveRecordよりも面倒くさいことをやらされていました。コードからデータベースの中身をいじくるのは同じですが、

@hoge.do("select * from products;")

みたいなかんじで、生のsql文を書いていました(@hogeにはDBIのデータベースハンドラとやらが入っています。データベースをいじくるためのものっぽいです)。

この体験のおかげで、ActiveRecordのありがたみがちょっとだけわかりました。

Product.order("id desc")

と書けば中身を持ってきてidの降順に並べることができるので、ずいぶん便利そうです。

あと余談ですが、勉強したことをブログに書こうとすると意外と中途半端な理解のところが見つかったりして面白いですね(時間はとられますが)。