2014-11-24 2 views
1

Im новое в граале и его трудная работа попытаются понять его без того, кто может задавать такие вопросы. У меня есть следующая проблема. Это два моих доменных классов у меня есть: Pagadora и CalculoОтфильтровать «принадлежитТо»

Pagadora.groovy

class Pagadora { 
    String nombre 
    Boolean activo 
    static hasMany = [calculoIMSS: Calculo, calculoPagado: Calculo, calculoConvenio: Calculo] 
    static mappedBy = [calculoIMSS: 'imss', calculoPagado:'pagadoPor', calculoConvenio:'convenio'] 
} 

булева переменная Activo относится, если "Pagadora" будет собирается показать в «выбрать список» вида в классе Calculo

Calculo.groovy

class Calculo { 
    String nombre 
    BigDecimal sueldo 
    static belongsTo = [imss:Pagadora, pagadoPor:Pagadora, convenio:Pagadora] 
} 

То, что я хочу, это следующий, я хочу, чтобы отфильтровать в избранных, только Pagadoras, которые являются активными

<g:select id="imss" name="imss.id" from="${Pagadora.Pagadora.list(sort: "nombre", order: "asc")}" optionKey="id" required="" value="${calculoInstance?.imss?.id}" class="many-to-one form-control" noSelection="['':'-Escoja la empresa-']" />  

К сожалению Если бы это было немного трудно понять меня, но это было немного трудно мне объяснить что-то подобное в английском (мой родной язык испанский: P)

+0

На самом деле это не ваш вопрос, но это не отличная идея встраивать код, подобный этому в GSP. Лучшая практика заключается в выполнении запроса перед визуализацией представления (обычно в действии контроллера или в методе службы) и поместить результаты в модель, которая передается в представление. –

ответ

1

Если вы хотите, чтобы получить все записи, которые являются активными, измените атрибут from на:

from="${Pagadora.findAllByActivo(true) [sort: 'nombre', order: 'asc']}" 

Это dynamic finder.

Jeff указывает в комментариях, что здесь может быть опущен параметр boolean (см. Примеры для findAllBy). Если вы хотите получить все неактивные записи, вы все равно можете обойтись без параметра, называя ваш искатель findAllByNotActivo. Это особенно удобно, когда у вас есть два параметра для вашего искателя, где один является логическим.

+0

Просто именно то, что я искал. Большое вам спасибо за вашу помощь. –

+1

Вместо 'Pagadora.findAllByActivo (true)' вы можете сократить это до 'Pagadora.findAllActivo()'. Я работал над этим около 4 лет назад для Grails 1.3.2. https://jira.grails.org/browse/GRAILS-6277 –

+0

@Jeff: Спасибо, я так и думал, но мне не удалось найти это в документации. –