アーカイブ

« 1 ... 3 4 5 (6)

Tyzohブログ - ikarashiさんのエントリ
 ikarashiさんのエントリ配信

2007/07/11
[Secure-SBM:022] User と Tag の関連付け

執筆者: ikarashi (11:40 am)
こんにちは,五十嵐です.Version 0.3 に向けて作業を開始しています.まず始めに,ユーザが使用しているタグの一覧を作成するのに時間がかかるため,ユーザとタグを直接紐付けるテーブルを作成しました.

CREATE TABLE user_tags ( 
        user_tag_id     SERIAL, 
        user_id                 INTEGER, 
        tag_id                  INTEGER, 
        PRIMARY KEY(user_tag_id), 
        FOREIGN KEY(user_id) REFERENCES users(user_id), 
        FOREIGN KEY(tag_id) REFERENCES tags(tag_id) 
);


今まで運用していた場合には,紐付けが宙ぶらりんになってしまいますので,Version 0.2 からのバージョンアップ用に,紐付けを行うアクション updateFromVersion02 を追加しました.admin で呼び出します.

sub updateFromVersion02 : Local {
    my ( $self, $c ) = @_;

    my $num = 0;
    $c->stash->{pagetitle} = 'Secure-SBM Users-Tags Update';
    $c->stash->{template} = 'admin/updatefromversion02.tt';

    $c->model('SecureSBMDB::UserTag')->delete_all;
    foreach my $udb ($c->model('SecureSBMDB::User')->all){
        my $uid = $udb->user_id;
        foreach my $ubdb ($udb->user_bookmarks->all){
            foreach my $ubtdb ($ubdb->user_bookmark_tags->all){
                my $tid = $ubtdb->tag_id;
                if( $c->model('SecureSBMDB::UserTag')->find_or_create({
                        user_id => $uid,
                        tag_id  => $tid
                    })
                ){
                    $num++;
                }
            }
        }
    }

    $c->stash->{resultnum} = $num;

} # end of updateFromVersion02()

/admin/updateFromVersion02 を呼ぶと user_tags テーブルが更新されます.

あとは,タグを更新する際に必ず呼ばれる _registTags() 関数を変更します.
       $c->model('SecureSBMDB::UserTag')-> 
             find_or_create( 
                        { 
                             user_id => $uid, 
                             tag_id  => $tid 
                         } 
                    ); 

いままでは,ブックマークの一覧を呼び出して,タグを検索していましたが,これで直接一覧を得られるので,ユーザに紐付けられたタグ一覧の取得が少し速くなりました.

2007/06/22 記

参考:

Keyword: Perl Catalyst Secure-SBM SSBM セキュア・ソーシャル・ブックマーク
ikarashiさんのブログを読む | コメント (0) | トラックバック数 (0) | 閲覧数 (2213)
Trackback is not accepted now.
印刷用ページ 友達に送る
 
投稿された内容の著作権はコメントの投稿者に帰属します。
サイト内検索
ブログ カレンダー
«  «  2008 3月  »  »
24 25 26 27 28 29 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5