すまん、ちょっとマイグレーション書き換えた。

いや、Friendモデルの、だけど。
なんか、テスト書くのに飽きてきたwww」では、
db/migrate/*数字*_create_friends.rb

class CreateFriends < ActiveRecord::Migration
  def self.up
    create_table :friends do |t|
      t.column "my_id",        :integer,  :null => "false"
      t.column "friend_id",    :integer,  :null => "false"
      t.timestamps
    end
  end

  def self.down
    drop_table :friends
  end
end

こんな風に書いてたけど、書き方変えた。
だって、rails 1.x系の書き方じゃない?
やっぱり、アーリー・アダプタとしては、2.x系の書き方、したいじゃない?


なんで、こんな感じに。
db/migrate/20081214192809_create_friends.rb

class CreateFriends < ActiveRecord::Migration
  def self.up
    create_table :friends do |t|
      t.integer   :asked_user_id,                               :null => false
      t.integer   :was_invited_user_id,                         :null => false
      t.string    :state,               :default => "passive",  :null => false
      t.timestamps
    end
  end

  def self.down
    drop_table :friends
  end
end


んで、ついでに、aasmでステート管理する方面で考えることにした。
そうすれば、相互の友達関係が成立しているかどうかを、ステートで管理出来るからね。
流れとしては、

  1. 友達になろうぜ?(asked)
  2. イイよ?(accepted)

...あれ? 二つ、じゃまずいねwww
じゃあ、

  1. 友達になろうぜ?(asked)
  2. イイよ?(accepted)
  3. ヤだよ!(denied)
  4. 友達止めたいんすけど(deleted)

こんな感じか?

んなこって、友達数算出メソッドも書き換え。
app/models/friend.rb

   def self.friendships(user)
-    friends = user.asked_friends & user.was_invited_friends
+    friends = user.asked_friends | user.was_invited_friends
   end


さて、じゃあ、aasmのお勉強でも始めましょうか...