モデル内の低レベルのオブジェクト (「メンバー」オブジェクト) を保護することを検討しているため、デフォルトではそこから特定の情報のみにアクセスできます。
考えられるアプローチは次のとおりです(機能する場合はセクシーです!):
1) オブジェクト自体に「locked」というプロパティを追加します。デフォルトは「true」です。
これを行うための唯一のオプションは、クエリを受け取る式属性を使用することです。したがって、デフォルトで TRUE にロックするには、次のようにします。
<cfproperty name="locked" formula="select 1" />
2) 次に、これを使用するために既存の set-ers と get-ers を上書きします。
<cffunction name="getFullname" returnType="string">
<cfscript>
if (this.getLocked()) {
return this.getScreenName();
} else {
return this.getFullname();
}
</cfscript>
</cffunction>
3) このように使用すると:
<p> #oMember.getFullName()# </p>
ScreenName を表示します (すばらしい!)
しかし...私がこれを行うとき:
<cfset oMember.setLocked(false)>
<p> #oMember.getFullName()# </p>
ハングアップするだけです!!! 「式」を使用して定義されたプロパティを設定しようとすることは、禁止されているようです。
何か案は?db に存在しなくても、取得および設定可能なプロパティを ORM オブジェクトにアタッチする他の方法はありますか?
アイデアを歓迎します!