12 13-lecture

29
Ruby on RailsRDB(超基礎編) RINDO KATSURA 131213日金曜日

Upload: rindou-katsura

Post on 28-May-2015

116 views

Category:

Documents


2 download

DESCRIPTION

12/13 研究会でのレクチャー

TRANSCRIPT

Page 1: 12 13-lecture

Ruby on RailsとRDB(超基礎編)RINDO KATSURA

13年12月13日金曜日

Page 2: 12 13-lecture

目次

Ruby on Railsの紹介と基礎(3分タイムアタック)

O/R Mappingのお話

演習

13年12月13日金曜日

Page 3: 12 13-lecture

Ruby on Railsとは?

13年12月13日金曜日

Page 4: 12 13-lecture

3分タイムアタック

よくあるTODOアプリ作ります(Rails知ってる人はすみません)

3分以内にできたら拍手!!

13年12月13日金曜日

Page 5: 12 13-lecture

DBの研究会なので...

O/R マッパーをご存知ですか?

Object-relational mappingの略

“簡単”に”わかりやすく”、SQLを記述できる

この後みんなで触ってみます!

13年12月13日金曜日

Page 6: 12 13-lecture

David曰く「SQLって汚くない?」

O/Rマッパーの利点

SQLを分解できる

分解したSQLを構築できる

分解したものを抽象化してわかりやすい

13年12月13日金曜日

Page 7: 12 13-lecture

O/R mappingを体感!

13年12月13日金曜日

Page 8: 12 13-lecture

作ってみよう①

ssh [email protected]

ssh zmac001.sfc.keio.ac.jp

みんな1に入るとアレなので001 ~ 010くらいで

13年12月13日金曜日

Page 9: 12 13-lecture

作ってみよう②

rails new company

(control + C) : password求められる

cd company

bundle install --path vendor/bundle

CNSではこうやらないとできないらしい...

13年12月13日金曜日

Page 10: 12 13-lecture

作ってみよう③

rails g model department name:string

rails g model employee name:string age:integer sex:string department_id:integer

rake db:migrate

13年12月13日金曜日

Page 11: 12 13-lecture

できたDB

13年12月13日金曜日

Page 12: 12 13-lecture

データを入れてみよう

rails console

eigyobu = Department.new(:name => ‘eigyo’)

eigyobu.save

13年12月13日金曜日

Page 13: 12 13-lecture

演習①

太郎 (taro) という31歳(age)の男性(male)社員のデータを入れてみる。 (できてもコンソールはそのままで)

ヒント

Employee.new( :name => ‘’, :age => , :sex => ...

saveで保存

13年12月13日金曜日

Page 14: 12 13-lecture

データを入れてみよう②

太郎の部署に先ほど作った営業部(id : 1)を入れて更新してみる

taro.department_id = 1

taro.save

13年12月13日金曜日

Page 15: 12 13-lecture

演習②花子(hanako, 26歳)という女性社員を新規に作り、広報(kouho)部を新たに作成しそこの所属にする

ヒント

Department.new( .. , Employee.new( ..

○○.×× = hogefuga, ○○.save

13年12月13日金曜日

Page 16: 12 13-lecture

演習③

太郎がリストラされてしまいました..。太郎のデータを消しましょう。

ヒント

○○.delete : 削除のメソッド

○○.save : 削除したら変更を保存

Employee.all で確認13年12月13日金曜日

Page 17: 12 13-lecture

サンプルデータを入れます

quit (rails consoleから抜ける)

cat /home/t11240rk/company/db/seeds.rb > db/seeds.rb

rake db:seed

13年12月13日金曜日

Page 18: 12 13-lecture

やっと本番です

O/R マッパーを堪能する。

13年12月13日金曜日

Page 20: 12 13-lecture

まだまだ便利な機能が

http://guides.rubyonrails.org/

13年12月13日金曜日

Page 21: 12 13-lecture

ちょっと難しい

部署別の人って find_by_department_id的なコード書けばわかるけど...(id覚えてないとダメ. なにより長い)

Employee.find_by_department_id(Department.find_by_name(“eigyo”));

SELECT "employees".* FROM "employees" WHERE "employees"."department_id" = 1 LIMIT 1

13年12月13日金曜日

Page 22: 12 13-lecture

アソシエーション

Active Recordにassociationという機能があります!

http://guides.rubyonrails.org/association_basics.html

簡単にアソシエーションを記述できる

13年12月13日金曜日

Page 23: 12 13-lecture

こんなイメージ

13年12月13日金曜日

Page 24: 12 13-lecture

部署.社員達

簡単に呼び出したい!!

app/models/department.rb, app/models/employee.rb を編集しよう

13年12月13日金曜日

Page 25: 12 13-lecture

department.rb

vim(emacs) models/department.rb

has_many :employees を追加

13年12月13日金曜日

Page 26: 12 13-lecture

employee.rb

vim employee.rb

belongs_to :department を追加

13年12月13日金曜日

Page 27: 12 13-lecture

完成!

13年12月13日金曜日

Page 28: 12 13-lecture

確認

rails console

eigyobu = Department.find_by_name(‘eigyo’)

eigyobu.employees

13年12月13日金曜日