добавить пользовательские свойства определения к классу домена - PullRequest
3 голосов
/ 01 августа 2010

У меня есть требование разрешить пользователю определять некоторые настраиваемые поля в одном из системных объектов. Есть ли у вас какие-либо предложения / шаблоны / плагины, которые помогут мне добавить эту функцию в мое приложение.

спасибо,

Мени

Ответы [ 2 ]

6 голосов
/ 01 августа 2010

Вы можете добавить свойство Map в свой класс домена и хранить там произвольные данные. Это довольно ограничено все же. Он сгенерирует таблицу с ключами и значениями varchar (255), поэтому вам нужно самостоятельно управлять любыми преобразованиями типов, например,

class Thing {
   String name
   Map extraProperties = [:]
}

int age = 123
def thing = new Thing(name: 'whatever')
thing.extraProperties.age = age.toString()
thing.save()

...

def thing = Thing.get(thingId)
int age = thing.extraProperties.age.toInteger()

См. Краткие онлайн-документы в разделе "5.2.4 Наборы, списки и карты" в http://grails.org/doc/latest/.

0 голосов
/ 01 августа 2010

Звучит так, будто вы хотите, чтобы ваше приложение представляло собой бесступенчатый ключ, который пользователи могут изменять по своему усмотрению. Это справедливо?

Я не думаю, что это возможно или желательно. Подумайте о том, что происходит, когда вы добавляете атрибут к существующему объекту домена в Grails. Атрибут добавляется в отображение ORM, что означает, что таблицы должны быть изменены. Пользовательский интерфейс имеет еще одно текстовое поле для ввода данных; на странице списка есть еще один столбец, добавленный в ее таблицу.

Когда вы добавляете атрибут, многое происходит. Как вы будете управлять несколькими пользователями, изменяющими приложение одновременно? Что происходит, когда один пользователь изменяет таблицу, а другой обращается к старой версии?

Вы слишком много просите. Я не думаю, что это разумное требование. Сильная сторона Grails - быстрая разработка веб-приложений CRUD. Я не думаю, что это включает в себя изменение пользователями во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...