Ruby/Ruby on Rails/QuickStart
どこにでもあるけど、一応。
プロジェクトの作成
empプロジェクトを作成する。
プロジェクト名は何でもok

テーブルの作成
employeesテーブルの作成
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL default ”,
`age` int(3) NOT NULL default ’0′,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
キーは、名前id+auto_incrementに設定。
各カラム名はすべて小文字で、区切りがある場合はアンダースコア(_)を使って命名する。
テーブル名は、単語の複数形で表すのが決まりごと。
接続先テーブル情報設定の変更
config/database.ymlを書き換え
adapter: mysql
database: emp
username: root
host: localhost
password:
モデル、コントローラの作成
作成したプロジェクトに移動
モデル、コントローラを作成する。
対応するテーブル名を単数形にした名称にする。

コントローラの書き換え
app/controllers/employee_controller.rbを編集。scaffoldを追記。
scaffold :employees
end
WEBrickサーバの起動
WEBブラウザでアプリケーションを実行



Ruby/Ruby on Rails/model/5分でわかるActiveRecord
5分でわかる、ActiveRecord。
例を元に、ActiveRecordの動作を確認。
※Windowsを利用。
準備
-Railsのインストール→[[Ruby/Ruby on Rails/インストール]]
-Railsプロジェクトの作成→[[Ruby/Ruby on Rails/QuickStart]]
テーブルの作成
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) NOT NULL default ”,
`age` int(2) NOT NULL default ’0′,
PRIMARY KEY (`id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;
ここではMySQLを使用。XAMPPを利用するのが手っ取り早い
XAMPP:http://www.apachefriends.org/jp/xampp-windows.html
モデル(ActiveRecord)の作成
コマンドプロンプトを起動(スタート→ファイル名を指定して実行→cmd)。
続いてRailsプロジェクトのフォルダに移動
モデルの作成

コンソールの起動
コマンドプロンプトから
と入力してirbを立ち上げる。
検索
Friendsテーブルを検索してみる。
コンソールで以下を入力
まだデータがないので[](空のオブジェクト)が表示される。

モデル.find_allは、テーブルに登録されているすべてのレコードを取得するためのメソッド。
レコードの作成
テーブルに対してレコードを作成してみる。
そのままテーブルを検索

IDが自動採番されたレコードが、テーブルに追加された。
検索2
追加したレコードを一意に取得してみる

レコードが取得された。
モデル.find(id)で、IDを指定して一意なレコードを取得することができる。
レコードの更新→保存
取得したレコードに値を設定して保存する。
friend.age = 38
friend.save

モデル.saveで、レコードを更新することができる。
レコードの削除
レコードを削除してみる
Friend.delete_all

モデル.delete_allで、すべてのレコードが削除できる。
ID指定で削除する場合は、モデル.delete(id)を利用する。
テーブルにレコードを追加しないで新規ActiveRecordオブジェクトを生成

モデル.newを実行すると、テーブルにレコードを追加しないで新規ActiveRecordオブジェクトを生成することができる。
また、newした時点ではIDは発行されず、save等のメソッドでレコードをテーブルに登録する際に自動採番される。
動的な属性ベースのファインダ(Dynamicattribute-basedfinders)
テーブルに、ユーザーMr.Cを3人追加。
Friend.create(:name=>"Mr.C", :age=>20)
Friend.create(:name=>"Mr.C", :age=>30)

通常のFind
モデル.findで、名前がMr.C、年齢が30歳のレコードを検索

Dynamic attribute-based findersでFind
where句の記述がめんどくさいので、Dynamic attribute-based findersを利用する。

おしまい
ちょっとしたデータベースメンテナンスなら、irbとActiveRecordの組み合わせで容易に実行することができる。
SQLを書くよりラクなのです。
Ruby/Ruby on Rails/model/バリデータ入門(Validator)
概要
ActiveRecordには、値の検証を行うValidatorが標準で付属している。
Validatorの利用には、
ActiveRecord::Base#validateメソッドををオーバーライドしてバリデーションを実装する低レベルな方法と、
それを高いレベルで利用できるヘルパーを利用する方法がある。
低レベルな方法は効率が悪いので、可能な限り高レベルな方を利用する。
ヘルパーによるバリデータの指定方法
モデルクラスに宣言を記述する。
例:Friendsテーブルのnameは10バイトが上限
validates_length_of :name, :maximum=>10
end
たったこれだけで、
=> #<Friend:0×4893088 @attributes={"name"=>"tarou", "id"=>"19", "age"=>"28"}>
>> friend.name="yamashita tarou"
=> "yamashita tarou"
>> friend.save
=> false
>> friend.errors.on "name"
=> "is too long (maximum is 10 characters)"
値のチェックが自動的に実行できる!!!!
なんと美しい。
モデル.errorsには、ActiveRecord::Errorsクラスが格納される
=> ActiveRecord::Errors
条件に同意したかどうかチェックする:validates_acceptance_of
会員制サイトなどによくある、会員規約に同意しますか?などのチェックボックスがチェックされたか
確認するために利用する。
オプション
-message – カスタムエラーメッセージ (デフォルトは: "must be accepted")
-on – このバリデーションがいつ有効になるのかを指定します (デフォルトは :save で、 オプションとして :create, :update)
-accept – 受け入れたと判断される値を指定します。デフォルトの値は文字列 "1" で、これは HTML チェックボックスとの関連付けをしやすくします。
-if – バリデーションすべきかどうかを決定するためのメソッド、Proc、文字列を指定します (例、:if => :allow_validation または :if => Proc.new { |user| user.signup_step > 2 })。メソッド、 Proc、文字列は true か false を値として返すか、または評価された結果が true/false でなければいけません。
http://techno.hippy.jp/apidoc/classes/ActiveRecord/Validations/ClassMethods.htmlより。
例
validates_acceptance_of :check
end
=> #<Friend:0x485bb60 @attributes={"name"=>"", "age"=>0}, @new_record=true>
>> friend.check = 0
=> 0
>> friend.save
=> false
>> friend.errors.on "check"
=> "must be accepted"
>>
?> friend.check = "1"
=> "1"
>> friend.save
=> true
validate_on_create
validate_on_update
validates_associated
validates_confirmation_of
validates_each
値が存在しないことをチェックする:validates_exclusion_of
ActiveRecordの属性に、指定した値が設定されているかチェックする。
たとえば、ユーザー名にadministrator等の文字列を設定できないようにすることができる。
オプション
-in – 含まれてはいけないアイテムを列挙したオブジェクト
-message – カスタムエラーメッセージ (デフォルトは: "is reserved")
-allow_nil – true に設定されていれば、属性が null のときこのバリデーションをスキップします (デフォルトでは: false)
-if – バリデーションすべきかどうかを決定するためのメソッド、Proc、文字列を指定します (例、:if => :allow_validation または :if => Proc.new { |user| user.signup_step > 2 })。メソッド、 Proc、文字列は true か false を値として返すか、または評価された結果が true/false でなければいけません。
http://techno.hippy.jp/apidoc/classes/ActiveRecord/Validations/ClassMethods.htmlより。
例
validates_exclusion_of :name, :in => %w( admin superuser su administrator )
end
=> #<Friend:0x48e6eb8 @attributes={"name"=>"", "age"=>0}, @new_record=true>
>> friend.name = "administrator"
=> "administrator"
>> friend.save
=> false
>> friend.errors.on "name"
=> "is reserved"

