おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

ActiveRecord復習その2

昨日に引き続きメモ

ActiveRecord復習 - おもしろWEBサービス開発日記

オブジェクトをDBに直接保存する方法その1

  1. text列を持ったテーブルを作る
  2. Model定義内に下記のように書く
serialize :column_name

あとは普通に保存したり呼び出したりできる。ちなみにDBにはYAML形式にして保存しているらしい。

オブジェクトをDBに直接保存する方法その2

モデルの一属性に対応するオブジェクトを設定することで、DBデータの型を抽象化する方法がある。つまり、擬似的にオブジェクトを保存できるらしい。やり方は省略(使うときが少なそうなので)

オブジェクトの識別

2つのモデルオブジェクトは、同じクラスのインスタンスで同じ主キー(一般的にはid)を持っていれば"=="でtrueになる!!らしい。もちろん他の属性が異なる値でも。これは復習しといてよかった。

低レベルのDB接続

executeメソッドでできるらしい。

find_by_sql使用時に注意すること

例えばこんなことをしたときにハマるらしい。どこがハマるポイントかわかりますか?

  people = Person.find_by_sql("select name from people")
  people.each do |person|
    person.age += 1
    person.save
  end

find_by_sql使用時にid列を取得しなかった時にはその結果をDBに格納することができず、しかもエラーもでないらしい。だから、下記のようにselect * にしておいた方が無難。

  people = Person.find_by_sql("select * from people")
  people.each do |person|
    person.age += 1
    person.save
  end

今日はここまで

明日こそリレーションシップやる。

参考

RailsによるアジャイルWebアプリケーション開発 第2版

RailsによるアジャイルWebアプリケーション開発 第2版