Estou tentando escrever minha aplicação em rails (www.devgames.com.br) usando o Play Framework.
Achei uma barreira em algo que tentei fazer com o Play.
Eu tenho um controller que faz parte de um sub-framework que criei dentro do Play, o nome é : FWContentSearch.
Esse controller deveria ser um controller padrão que atravéz de métodos e atributos se comporte de uma forma ou de outra, mas basicamente ele instancia uma classe do pacote MODEL e faz um find, ele cria também os selects de ordem, direção da ordem, quantidade de linhas por página e tudo mais.
Para ver um exemplo, olhe aqui:
http://www.devgames.com.br/noticias
Ele montaria esta página, e se você reparar todos os outros conteúdos tem a mesma estrutura:
http://www.devgames.com.br/tutoriais
O que muda são os campos do ORDER, a tabela que vai ser pesquisada, os campos do grid e o FIND em si.
Então criei um controller PAI que vai fazer o básico e criei um controller no Play chamado “News” herdando do FWContentSearch, mas me deparei com o seguinte.
- Em um ambiente estático eu não posso sobrescrever os métodos.
- Não consegui obter uma classe Model atravéz de uma string, dinamicamente.
- Eu não consigo não ter os métodos que representam as actions (index por exemplo) e deixar a classe pai responder. Isso me faz ser obrigado a cada controller ter que fazer todos as passagens dos objetos para a view, o que é ruim para manutenção e portabilidade.
- Se eu chamo em “News” um método que passa o título da página que é um atributo de nome “title” para a view, mas este método está na classe pai, ele coloca o valor sendo o da classe pai, e não da classe onde estou, que seria da News".
- Para eu conseguir simular a sobrescrita de métodos, eu tenho que criar o método (na verdade não precisa nem ter a mesma estrutura que o método pai) e chama-lo aonde eu quero - na classe que estou, ai ele vai ignorar o método pai, porém se eu somente sobrescrever, a clase pai não conhece o método sobrescrito e executa sempre o método que está dentro dela.
O que acham?