настраиваемая проверка Grails

Обычно для домена Grails или класса команд вы объявляете свои ограничения и фреймворк добавляет метод validate () , который проверяет, допустимо ли каждое из этих ограничений для текущего экземпляра, например

class Adult {

  String name
  Integer age

  void preValidate() { 
    // Implementation omitted
  }

  static constraints = {
    name(blank: false)
    age(min: 18)
  }
}

def p = new Person(name: 'bob', age: 21)
p.validate()

В моем случае я хочу убедиться, что preValidate всегда выполняется перед класс подтвержден. Я мог бы добиться этого, добавив метод

def customValidate() {
  preValidate()
  validate()
}

. Но тогда каждый, кто использует этот класс, должен помнить о вызове customValidate вместо validate . Я тоже не могу этого сделать

def validate() {
  preValidate()
  super.validate()
}

, потому что validate не является методом родительского класса (он добавляется метапрограммированием). На данный момент у меня есть это: Модель ...

У меня были некоторые проблемы с созданием пользовательской интерполяции, я просмотрел все примеры, которые мог найти в сети, но, что бы я ни делал, успеха не имел. На данный момент у меня есть это:

Инициализаторы модели

has_attached_file :photo,
  :path => ":rails_root/public/images/:img_name-:style.:extension",
  :styles => {
    :original => '100x100',
    :thumb => '30x30'
}

/ paperclip.rb

Paperclip.interpolates :img_name do |attachment, style|
  attachment.instance.img_name
end

img_name - это поле, заполняемое в форме при загрузке вместе с изображением. Ошибка, которую я получаю при загрузке:

Неверный аргумент - (C: / Users /.../ stream20110410-384-stl2lk20110230-213-1fm2bab, C: /.../ photo_upload / public / images /: img_name- original.jpg)

10
задан Jakub Hampl 10 April 2011 в 17:30
поделиться