2011-02-03 12 views
3

私は「最近のアクティビティ」ページを構築しています。基本的にこのページは、ユーザーが実行したいくつかのアクションのマッシュアップです。問題は、このデータがすべて異なるフィールドを持つ複数(3つ程度)のドメインオブジェクトタイプにまたがっていることです。すべてのドメインはUserオブジェクトに関連付けられていますが、関連付けは異なります。Grailsで複数のドメインオブジェクトを照会する

ドメインは、UserPost、FriendRequest、UserTaskです。これらのドメインをすべて照会し、ページングをサポートし、dateCreatedによって注文する方法はありますか?私の構造を変える方が良いでしょうか?どんな助けも素晴らしいだろう!

答えて

5

私のウェブサイトにも同様の機能が実装されており、すべての種類のアクティビティを記録するアクティビティドメインクラスを追加する方が良いという結論に至りました。 あなたはUserPost、FriendRequest、およびUserTask(または何でも)に新しいレコードを挿入するたびのは

class Activity { 
    Date dateCreated 
    String linkClassName 
    Long linkId 

    def getLink() { getClass().classLoader.loadClass(linkClassName).get(linkId) } 
} 

を言ってみましょうその後、あなたは以下のようafterInsertGORM eventsを使用して、同様の活動に新しいエントリを作成します。

def afterInsert = { 
    new Activity(linkClassName: this.class.name, linkId: this.id).save() 
} 
これが完了したら

、あなたはこのようなあなたの最近の活動を取得することができます。

def activities = Activity.list(max: 5, sort:'dateCreated', order:'desc') 
+0

を私は、このソリューションが好きで、私はそれがなると思います本当にうまくいく。私は狂ったクエリを書くことなく、かなり柔軟にすることができます。ありがとう! – RyanLynch

+0

歓迎.... – fabien7474

関連する問題