Я пытаюсь защитить низкоуровневый объект в своей модели (объект «член»), поэтому по умолчанию из него можно получить доступ только к определенной информации.
Вот возможный подход (чертовски сексуально, если бы он работал!):
1) Добавьте свойство под названием «заблокировано» — по умолчанию оно равно «истине» для самого объекта.
Похоже, что единственный способ сделать это, а не привязывать его к столбцу таблицы базы данных, — это использовать атрибут формулы, который принимает запрос. Итак, по умолчанию заблокировано значение TRUE, у меня есть:
<cfproperty name="locked" formula="select 1" />
2) Затем я перезаписываю существующие установщики и получатели, чтобы использовать это: например.
<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, которые можно получить и установить без их присутствия в БД?
Идеи оценены!