2014年6月19日木曜日

ハッシュとは?シンボルとは?

 ハッシュって意味が分からない。
 配列の値を特定するためのキーは通常の配列では数値(インデックス)だけど、ハッシュ(連想配列)では文字列を使うみたい。
irb(main):049:0> user = {} #ハッシュを定義、初期化する
=> {}
irb(main):050:0> user["u"] = "unko"
=> "unko"
irb(main):051:0> user["a"] = "anko"
=> "anko"
irb(main):052:0> user["u"]
=> "unko"
irb(main):053:0> user #リテラルな表記で返される
=> {"u"=>"unko", "a"=>"anko"}
irb(main):054:0> user = { "p" => "pink", "t" => "tank" } #複数同時に代入できる
=> {"p"=>"pink", "t"=>"tank"}
irb(main):055:0> user
=> {"p"=>"pink", "t"=>"tank"}
ちょっとわかった気がする。
 でもシンボルはもっとわからない。Railsではハッシュではなくシンボルの方がよく使うそうです。
シンボルはハッシュのキーとして利用するのですが、"unko"のようなリテラルではなく :unko のように頭にコロンを置きます。しかもRuby1.9からは下記のような表記も許され、一般的になっているそうな。大混乱。
{ :name => "unko", :email => "unko@unko.com" }
{ name: "unko", email: "unko@unko.com" }
2番目の表記ではシンボルにハイフンが使えないんですって。更に大混乱。ルールが細かい。
 チュートリアルではシンボルについて明解な説明は無かった?読み飛ばしたのかな。結局、なぜRailsではシンボルを主に使用するのか、よくわからなかった。書式はなんとなくわかったけど。

参考:

2014年6月18日水曜日

ファイル名・テーブル定義等のルール(規約)

ファイル名の規約
ディレクトリ
ファイル
クラス名
親クラス

app/controllers/
xxxs_controller.rb
XxxController
ApplicationController

app/models/
xxx.rb
Xxx
ActiveRecord::Base

app/views/xxxs/
yyy.html.erb

app/views/layouts/
xxx.html.erb

app/helpers/
xxxs_helper.rb

db/migrate/
YYYYMMDDhhmmss_mmm_xxxs.rb
MmmXxxs
ActiveRecord::Migration

test/fixtures/
xxx.yml

テーブル名とクラス名
  • テーブル名は複数形
  • 単語の区切りはアンダーバー(_)
  • 対応するクラス名は単語の先頭を大文字にして _ を取り除いたもの

キーのカラム名
  • 主キーのカラム名は「id」
  • 外部キーのカラム名は「テーブル名の単数_id」

日付関連のカラム名
  • DATE型のカラムには名前を 「受動態_on」
  • TIMESTAMP型のカラムには名前を「受動態_at」
  • 更新日時、作成日時は「updated_at」、「created_at」

結合テーブル
  • 関連させたいテーブル名をくっつけた名前にする
  • カラム「id」を作らずに、関連させる2つのキーのセットを主キーにする

Railsプロジェクトのファイル構成

 とりあえず覚えられません。勉強しながら何度も見返します。

databaseを削除・再作成・再構成する

rake db:migrate:reset
データベースの扱いがよくわからなくて困るとたまに使います。

参考サイト

GEMをアップデートする

gem i rubygems-update
update_rubygems
gem -v
gem pristine --all

 gem updateは古いとかなんとか。よくわかりませんが、こちらを使うことにします。