Использование полей перечисления с Lift и CRUDify - PullRequest
4 голосов
/ 02 февраля 2012

Я собрал небольшое приложение Lift, используя CRUDify, для выполнения основных операций CRUD над некоторыми таблицами базы данных.

Несколько столбцов имеют тип "CHAR (1 byte)" и предназначены для хранения значений "Y "или" N ".Мой класс модели определяет эти поля, как в этом примере:

...
object isActive extends MappedEnum(this, YesNo) {
 override def dbColumnName = "IS_ACTIVE"
 override def displayName = "Active"
}
...

Этот тип, "YesNo" - это объект Scala, определенный следующим образом:

object YesNo extends Enumeration {
  val Y, N = Value
}

В веб-браузере создаетсяавтоматически генерируются CRUDify, столбцы, подобные этому, отображаются с «Y» и «N» в качестве доступных параметров.Тем не менее, когда вы создаете или редактируете строку ... то, что на самом деле сохраняется, это "1" или "0"!

Очевидно, я просто скучаю по чему-то здесь.Как я могу структурировать это так, что CRUDify позволит пользователям выбирать из "Y" или "N" в браузере, и хранить либо "Y", либо"N" в базе данных?

1 Ответ

0 голосов
/ 08 февраля 2012

Хм ... не огромное сообщество Scala / Lift здесь, на StackOverflow! На самом деле, может быть, что не так много сообщества для этого подкомпонента "CRUDify" в Lift.

Во всяком случае, я в конечном итоге нашел ответ (сортировка), подписавшись на список рассылки «ЛифтВеб» в группах Google. По-видимому, это известное ограничение в структуре CRUDify. Так было годами, и это не является ограничением, которое кого-то особенно волнует, но это известно.

Один разработчик в 2009 году попытался найти способ обойти это путем создания своего собственного подкласса MappedField и использования его в качестве отображаемого типа в своих классах модели Lift. Класс из 140 строк, а также электронное письмо с кратким описанием его можно найти по адресу:

http://groups.google.com/group/liftweb/browse_frm/thread/34560f30fab299a7/cdca54c8e1486237?pli=1

Я не уверен, что это сработало на 100% в 2009 году, и у меня было множество проблем, когда я пытался использовать его здесь в 2012 году (Scala и Lift сильно изменились за последние три года).

Я потратил небольшое количество времени на попытки заставить этот MappedField работать на подклассе ... и затем получил одобрение на выбор подхода, отличного от CRUDify. Часть миссии для этого небольшого приложения состояла в том, чтобы узнать кое-что о том, что делать и чего не делать с Lift, и я думаю, что мы выполнили эту часть миссии сейчас. :)

Однако, если это исследование и пример кода помогут кому-то еще в дальнейшем, тогда это было бы здорово.

...