無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

ActiveRecordでのテーブルマッピング

ActiveRecord::Baseの派生クラスは、クラス名の複数形となるテーブルに対応付けられます。対応するテーブルが見つからない場合、エラーになります。

テーブル定義:

CREATE TABLE kittens (
  id int(11) NOT NULL auto_increment PRIMARY KEY,
  name VARCHAR(255),
  color VARCHAR(255)
);

サンプル:

# kittensテーブルに対応するクラス (テーブル名の単数形)
class Kitten < ActiveRecord::Base 
end
kitten = Kitten.find_by_name("mii")
puts kitten.name + "/" + kitten.id.to_s


# テーブル「foos」が検索され、「対応するテーブルが見つからない」エラーとなる。
class Foo < ActiveRecord::Base 
end
begin 
  kitten = Foo.find_by_name("mii")
rescue
  puts $! 
end

出力:

mii/1
Mysql::Error: #42S02Table 'test.foos' doesn't exist: SHOW FIELDS FROM foos


テーブル名を明示することもできます。
サンプル:

# テーブル名を明示することも可能。
class Hoge < ActiveRecord::Base 
  set_table_name "kittens"
end

kitten = Hoge.find_by_name("mii")
puts kitten.name + "/" + kitten.id.to_s

出力:

mii/1


継承が深い場合、ActiveRecord::Baseの直下の派生クラス名が使用されます。
サンプル:

# Foo << Kitten << ActiveRecord::Base
module A
  class Kitten < ActiveRecord::Base 
  end
  class Foo <  Kitten 
  end
end

# A::Foo のAPIを使用 
# テーブル「kittens」が検索される
kitten = A::Foo.find_by_name("mii")
puts kitten.name + "/" + kitten.id.to_s


# Kitten << Foo << ActiveRecord::Base 
module B
  class Foo < ActiveRecord::Base 
  end
  class Kitten <  Foo 
  end
end

#テーブル「foos」が検索され、「対応するテーブルが見つからない」エラーとなる。
begin
  kitten = B::Kitten.find_by_name("mii") 
rescue
  puts $!
end

出力:

mii/1
Mysql::Error: #42S02Table 'test.foos' doesn't exist: SHOW FIELDS FROM foos