Rails: 建立好友名單
網站想要開發「好友名單」功能時,會新增Table來記錄好友之間的關係,在Rails應該怎麼做呢?假設目前系統已經有User這個Model,我們將會建立 User has_many friends的關係來記錄每個User擁有的好友們。
首先新增一張Table來記錄Friendship(請善用Migration):
class AddFriendship < ActiveRecord::Migration
def self.up
create_table :friendships, :id => false do |t|
t.column :user_id, :integer, :null => false
t.column :friend_id, :integer, :null => false
end
end
def self.down
drop_table :friendships
end
end
接下來在User Model中定義好友關係:
class User < ActiveRecord::Base
has_and_belongs_to_many :friends,
:class_name => "User",
:join_table => "friendships",
:association_foreign_key => "friend_id",
:foreign_key => "user_id"
end
如此一來,你就可以用下列語法來建立使用者之間的好友關係:
u = User.create(:name => "deduce")
k = User.create(:name => "punk")
u.friends << k if not u.friends.include?(k)
# 如果 u 的好友不包含 k 則加入好友,不需要另外進行儲存的動作
u.friends
取得好友名單、u.friends.count
取得好友人數