2012年8月31日金曜日

Rails モデルリレーション

Railsでモデルのリレーションを設定

Usersテーブル
id: interger
name: string
email: string

Userモデル
class User < ActiveRecord::Base
  attr_accessible :email, :name
  has_many :microposts
end

Micropostsテーブル
id: interger
content: string
user_id: integer

Micropostモデル
class Micropost < ActiveRecord::Base
  attr_accessible :content, :user_id
  belongs_to :user
  validates :content, :length => { :maximum => 20 }
end

コードはRuby on Rails Tutorialより拝借(▰╹◡╹)

すごく丁寧な説明でわかり易い!

まぁ、こんなコンテンツあるの今日気づいたんだけどね…(つд⊂)エーン

これでUsersテーブルのidがMicropostsのUser_idを参照するようになったはず…

コンソールでチェックしてみよ
$ rails console
> first_user = User.first
user 05:54:54="05:54:54" 2="2" bar="bar" created_at:="created_at:" email:="email:" example.com="example.com" foo="foo" id:="id:" name:="name:" updated_at:="updated_at:"

> first_user.microposts
Micropost id: 1, content: "first microports", user_id: 2, created_at: "2012-08-31 06:26:42", updated_at: "2012-08-31 06:40:54">, micropost 06:57:15="06:57:15" 2="2" 4="4" content:="content:" created_at:="created_at:" id:="id:" microports="microports" pre="pre" second="second" updated_at:="updated_at:" user_id:="user_id:"

最近、チュートリアルやリファレンスを見るようにしてる

より理解が深まるよ

是非参考にしてください

ここ→Ruby on Rails Tutorial book Ruby on Rails Tutorial book (日本語)

( ̄(エ) ̄)彡☆

2012年8月28日火曜日

Rails ルーティング

基本系?
get "test" => "test#index"

/testパスとtestコントローラのindexアクションと紐付け

asオプションでルーティングに名前を付けると…
get "test" => "test#index", as: "test"

コントローラやビューからtest_pathみたいに呼び出せる
また、link_to、redirect_toメソッドではシンボル(:test)でパスを指定できるよー

特定のパスに対するアクションを指定する場合
match "test1" => "test#index"

postに限定したい場合
post "test" => "test#index"

パラメータを埋め込む場合
get "test/:name/:address" => "test#index"

ポイントはgetpostを理解して使い分けることー

セキュリティ上、絶対getじゃないダメってことはない

postじゃないとダメな場合もある

( ̄(エ) ̄)彡☆

2012年8月27日月曜日

Ruby 繰り返し処理

( ̄(エ) ̄)彡☆

timesメソッド
i = 1
10.times.do |i|
 print i, "\n"
end

uptoメソッド
1.upto(10) do |i|
 print i, "\n"
end

downtoメソッド
10.downto(1) do |i|
 print i, "\n"
end

eachメソッド railsでお馴染み(´▽`)
colors = ["red", "green", "blue"]
colors.each do |color|
 puts color
end

while文
i = 0
colors = ["red", "green", "blue"]
while i < colors.length
 puts colors[i]
 i += 1
end

for文
colors = ["red", "green", "blue"]
for color in colors
 puts color
end

Ruby case文

Rubyのcase文です( ̄(エ) ̄)彡☆

おみくじアプリ(Ruby1.9.3-p194)

omikuji.rb
num = rand(10) #0〜9の整数をランダムに取得
case num
when 0 
 puts "大吉"
when 1..3 #「..」なら1〜3
 puts "中吉"
when 4...6 #「...」になると4〜5
 puts "吉"
when 6..7
 puts "小吉"
when 8
 puts "凶"
else
 puts "大凶"
end

結果(。╹◡╹。)

$ ruby omikuji.rb #=> 凶

ちなみに…変数のクラスオブジェクトの比較とかもできる

aisatsu = "おはよう"
case aisatsu
when String
 puts "Stringオブジェクトオブジェクト"
end

2012年8月19日日曜日

TextMate2がOSSと聞いて…

TextMate2のバイナリーはGitHubから

TextMate-Download

環境
Mac OS X 10.8.1


RVMを使用している場合

1.9.3の場合(gemsetを利用の場合は1.9.3@railsな感じもオケ)
$ rvm wrapper 1.9.3 textmate
$ which textmate_ruby

TextMateのPreferences→Variables















TM_RUBYを追加して、Value値にtextmate_rubyのパスをセット

これでオケヾ(。╹◡╹。)

前は日本語対応されてなくて TextMate2IMFixなるものがあったみたいだが、OSSになってアップデートの頻度がすごく早く、日本語対応も早々に対応されてたー

後はRubyの補完がalt+escに割り当てられてすごくウザかったのでcontrol+tabに変更

全体的にいい感じだと思う

sublime text2がえらく盛り上がってるが、TextMateもOSSになってかなり頻繁にアップデートされているので目が離せませんぞ〜

でわ( ̄(エ) ̄)彡☆