Galera, tenho estudado rails, e estou tentando abstrair o conceito de restfull e da lógica de negócios do model.
Para estudo, resolvi desenvolver um sistema ficticio de comprar, no estilo do mercado livre, ebay, etc?
Pois bem: Tenho três entidades: CategoriaProduto, SubCategoriaProduto e Produto.
Minha dúvida é na hora de criar um produto. Quero que o usuário clic em uma categoria, logo depois apareca todas as subcategorias para ele escolher, e depois a tela de cadastro do produto. Como ficaria essa organização a nível de controller?
No java eu criaria métodos para ir setando essas características no objeto Produto. Mas como rest diz que deve-se ter apenas as actions básicas, não consegui enchergar como fazer isso.
No Rails você teria um modelo individual para cada uma das classes que você disse(CategoriaProduto, SubCategoriaProduto e Produto).
Acredito que seus modelos ficariam mais ou menos assim:
CategoriaProduto(model):
SubCategoriaProduto(model):
Produto(model):
Enquanto ao seu controller, você pode criar um controller para popular os dados independente dos models. Quando você não utiliza o Scaffold você pode mapear seus recursos de uma maneira mais flexível.
Eu utilizaria esse cadastro no controller de Produto(pois você estará fazendo um cadastro de produto, e você já terá suas SubCategorias e Categorias com dados pré populados). Dai é só fazer as validações na view para ir mostrando os items assim que você for escolhendo(no seu caso escolher uma Categoria em um drop-box ou via ajax, liberar a SubCategoria para ser buscada, depois isso liberar a partial contendo o cadastro de Produtos para ser populado).
Ex:
@categoriaprodutos.subcategoriaprodutos.each do |subcate|
Retornaria todas as categorias de um determinado produto, ou de todos os produtos, dependendo de qual função foi chamada antes(CategoriaProdutos.all ou CategoriaProdutos.find(params[:id])).
O segredo aqui está mais em entender os models do que o controller em si.