我正在考虑保护模型中的低级对象(“成员”对象),因此默认情况下只能从中访问某些信息。
这是一种可能的方法(如果可行的话,该死的性感!):
1)添加一个名为“locked”的属性 - 默认为“true”到对象本身。
看来,这样做的唯一选择,而不是将其绑定到 db 表列,是使用接受查询的公式属性。所以默认锁定为 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>
就挂了!!!似乎尝试设置使用“公式”定义的属性是禁忌。
有任何想法吗?任何其他方式我们可以将属性附加到可获取和可设置的 ORM 对象,而它们不存在于数据库中?
想法赞赏!