Hatena::Grouprubyist

Rubyを勉強しようと思ってはじめた日記

2008-06-01

何を買ったのかメモをしておきたい(2)Activerecord::Baseを継承したクラス

| 18:46 | 何を買ったのかメモをしておきたい(2)Activerecord::Baseを継承したクラス - Rubyを勉強しようと思ってはじめた日記 を含むブックマーク はてなブックマーク - 何を買ったのかメモをしておきたい(2)Activerecord::Baseを継承したクラス - Rubyを勉強しようと思ってはじめた日記 何を買ったのかメモをしておきたい(2)Activerecord::Baseを継承したクラス - Rubyを勉強しようと思ってはじめた日記 のブックマークコメント

Activerecord::Baseを継承したクラスがあります(ここではMemos)。memosというテーブルの中身を全部取得するために、find(:all)で呼び出します。その結果は、Arrayクラス。でも、Memosをインスタンス化したmemos2は、Memosというクラスになっています。これってなんでなんだろう?

他のクラスの場合、継承すると親のメソッドを使える気がするんだけれど違うのかなあ?

memo.cgi

#!/usr/local/bin/ruby
print "Content-Type: text/html\n\n"
require 'memo'

begin
memos  = Memos.find(:all)
memos2 = Memos.new

print memos.class,'<hr>'
memos.methods.each{|method|
    print method,'<br>'
}

print memos2.class,'<hr>'
memos2.methods.each{|method|
    print method,'<br>'
}
    rescue => ex
        print '<strong>error:</strong>',ex
end

memo.rb

require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection(
   :adapter  => 'mysql',
   :host     => 'localhost',
   :username => 'root',
   :password => 'mysql',
   :database => 'memo'
)

class Memos < ActiveRecord::Base
    def find_by_date(date)
        return date
    end 
end

何を買ったのかメモをしておきたい(1)SQLを書いてみた

| 07:20 | 何を買ったのかメモをしておきたい(1)SQLを書いてみた - Rubyを勉強しようと思ってはじめた日記 を含むブックマーク はてなブックマーク - 何を買ったのかメモをしておきたい(1)SQLを書いてみた - Rubyを勉強しようと思ってはじめた日記 何を買ったのかメモをしておきたい(1)SQLを書いてみた - Rubyを勉強しようと思ってはじめた日記 のブックマークコメント

アクセス解析も終わっていないのに、他の事を書くのは気が引けます。

ひけるけれど、作ってみたいなあ、と思ったので。

SQLで気づき

参考サイト

sql.txt

DROP TABLE IF EXISTS memos;
create table memos (
id int auto_increment primary key,
title varchar(255),
money int,
create_date timestamp,
modified_date timestamp,
type int,
message text
);

DROP TABLE IF EXISTS money_type;
create table money_type (
id int auto_increment primary key,
name varchar(255) not null
);
INSERT INTO money_type (name) VALUES('コンビニ');
INSERT INTO money_type (name) VALUES('外食');
INSERT INTO money_type (name) VALUES('書籍');
INSERT INTO money_type (name) VALUES('食料');
INSERT INTO money_type (name) VALUES('その他');

DROP TABLE IF EXISTS users;
create table users (
id int auto_increment primary key,
user_id varchar(255) UNIQUE not null,
name varchar(255) not null,
type int
);
INSERT INTO users (user_id,name) VALUES('d4-1977','d4-1977');
カレンダー
2007 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2009 | 06 | 08 |