2011-07-18 18 views
1

ドメインクラスのスコープをgrailsで指定できるかどうか知りたいです。スコープをドメインクラスに設定することはできますか?

現時点で私のアプリケーションがどのように動作しているかを説明する語句はありません。 - データベースアクセスは、SQLJを使用して外部の「モジュール」を介して行われます。このモジュールはGrailsアプリケーションのコントローラのユーザです。 - ユーザーは、フォームを送信する特定の情報を要求します - >外部モジュールに要求を送信する - >データベースから抽出された情報 - >ビューに表示される情報をgrails mem DB(HSQL)に読み込みます。

私はアプリケーションを使用している唯一の開発環境でうまく動作します。しかし、私はアプリケーションが2人以上のユーザーとどのようにふるまうのだろうと思っています。つまり、grailsのメモリデータベースにロードされた情報は、ユーザ間で共有されるかどうかということですか?そして、あるユーザーが要求した情報を他のユーザーと共有する方法はありますか?

この件に関するお手伝いをお寄せいただきありがとうございます。

よろしくお願いいたします。

答えて

1

データベース内のすべてのデータは、grailsアプリケーションのすべてのユーザーで共有されます。特定のユーザーに返されるデータを制限するカスタムクエリを作成する必要があります。あなたのアプリケーションにはおそらく次のようなものがあります。

class DomainClass1 { 
//fields you get from SQLJ go here 
int userId 
} 

ドメインクラスのインスタンスにデータを取得します。あなたはuserIdを私たちのプロジェクトで5

def domInstance2=DomainClass1.findByUserId(5) 
//Do stuff with domInstance2 
+0

こんにちは。あなたがJaredとVictorに感謝しています。あなたのソリューションの組み合わせを使用します。 – kij

1

すべてのユーザーが共有します。

しかし、他のデータベースと同様に、現在のユーザーに関連する情報のみを選択できる基準(db列)が必要です。

+0

私がうまくいけば、私が望むことをする唯一の方法は、各ユーザーの個人用仮想データベースをシミュレートして、そのデータだけがアプリケーションに表示されるようにすることです。そのためにGrailsの設定(例えばDataSource.groovyファイルから)がありますか? – kij

1

を持つユーザーのための情報を表示したいとき

def domInstance=new DomainClass1() 
domInstance.loadFromSQLJ() //call the SQLJ module and put it's data in the domain class 
domInstance.userId=5 //assign the user associated with this info 
domInstance.save() 

はその後、我々は、アカウントdomain aggregate rootに取るドメインクラスget()list()Userまたは何をオーバーライド)、名前付きクエリもすべてチェックします。

これは、findBy*()、条件、findWhere()(ダイナミックメソッドをオーバーライドすることもできます)などの他のすべての手段にアクセスする手段をすべて残しますが、セキュリティレビューの量は80%削減されます。

突然足場にDomainClass.list()を使用しても問題ありません。

関連する問題