Обычно для домена 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)