ActiveRecord

BLOB値の取り出し方がわからない。

ActiveRecordを使ってバイナリデータをDBに格納したり取り出したりする実験をしたが、格納は簡単にできたけど取り出しの方法がわからない。以下の手順で操作を行ったが取り出したファイルと格納したファイルのサイズが明らかに違っている。テーブルのレイア…

連続更新

以下のようなロジックの場合、2回目の更新は無効になる。 user = User.new(:name => "David") user.save user.name = "koki" user.save #2回目のsaveは内部的にid=0であるレコードへのupdateを発行している。この場合、1回目のsaveのときはinsertなので、Act…

id

id項目はauto_incrementにしないと、ActiveRecordからデータが挿入されたときにnullになってしまう。でもってidがnullであるレコードが複数できる。つまりidの意味が無くなる。 id項目がnot nullの時はエラーになってしまう。 id項目に一意な値をセットする…

sqliteを使用するとき

コネクションを以下のようにする。 ActiveRecord::Base.establish_connection( :adapter => "sqlite3", :dbfile => "/home/koki/test.db" ) :dbfileパラメータを:databeseと勘違いしてちょっとはまった。

属性の値をBooleanとして評価する

属性名? メソッドを使うと属性の値がBooleanとして解釈される。 0(数値),"0"(文字列),"f","false"(文字列),"",nil,false(Rubyのbool型定数)=>false それ以外=>true p user.name #=> "false" p user.name? #=> false p user2.name #=> "David" p user2.name? …

行の削除

1行削除はdeleteメソッド(クラスメソッド)でidを指定する。 User.delete(15) 範囲を渡して複数件削除もできる。 User.delete(12..15)

ID以外を使用した検索

u = User.find_by_name("David") #=> #"David", "id"=>"4", "age"=>"99"}> u = User.find_by_age(40) #=> #"uncle", "id"=>"1", "age"=>"40"}> find_by_属性名(パラメータ)というメソッドを実行すると、 SELECT * FROM テーブル名 WHERE 属性名 = パラメータ…

属性へのアクセス

u = User.find(1) u.name #=> "David" u[:name]#=> "David" アクセサメソッドを使うやり方とハッシュのようにするやり方。 ただし、ハッシュのようなやり方は非推奨。理由は本によると、柔軟性にかけるから、とのこと。 どう柔軟性に欠けるのかもなんか書い…

デフォルトのマッピングルールは

テーブル名=クラス名の複数形が基本。 テーブル名:orders−クラス名:Order 不規則変化もたいていは良きに計らってくれるらしい。 テーブル名:batches−クラス名:Batch テーブル名:data−クラス名:Datum 複数の単語からなる名前の場合は クラス名→大文字…

テーブル名≠クラス名の複数形にしたいとき

class User < ActiveRecord::Base set_table_name "names" endnamesテーブルの1レコードがUserクラスにマッピングされる。

も少し深くおべんきょ

あ。同じサンプルがRails本に書いてあった。 これから熟読。。。せっかくお金出して買ったんだからね。

ActiveRecord楽しい

ルビまの記事などを参考にActiveRecordをさわってる。 http://jp.rubyist.net/magazine/?0006-RubyOnRails rubygemsとrailsがもうインストールされているので、いきなりサンプルを実行。 DBは別のときに作っていたやつを使いまわし。 こんなテーブルを使用し…