すまん、ちょっとマイグレーション書き換えた。
いや、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でステート管理する方面で考えることにした。
そうすれば、相互の友達関係が成立しているかどうかを、ステートで管理出来るからね。
流れとしては、
- 友達になろうぜ?(asked)
- イイよ?(accepted)
...あれ? 二つ、じゃまずいねwww
じゃあ、
- 友達になろうぜ?(asked)
- イイよ?(accepted)
- ヤだよ!(denied)
- 友達止めたいんすけど(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のお勉強でも始めましょうか...