Como executar `trilhos gerar andaimes` quando o modelo já existe?

332

Eu sou novo no Rails, então meu projeto atual está em um estado estranho.

Uma das primeiras coisas que gerou foi um modelo de "filme". Comecei a defini-lo com mais detalhes, adicionei alguns métodos, etc.

Agora percebo que deveria ter gerado isso rails generate scaffoldpara conectar coisas como roteamento, visualizações, controlador etc.

Tentei gerar o andaime, mas ocorreu um erro ao dizer que já existe um arquivo de migração com o mesmo nome.

Qual é a melhor maneira de criar andaimes para o meu "filme" agora? (usando trilhos 3)

Lan
fonte
1
Provavelmente é melhor escrever seus próprios controladores, visualizações e rotas. Você vai aprender mais sobre os conceitos
Ben Aubin
1
Concorde com @ penne12. Pelo menos no começo, até você se sentir confortável com os conceitos, para saber o que todo o código está fazendo e que é gerado para você.
mydoghasworms
Não é diretamente relevante, mas se você errar, use os trilhos para destruir <etc>. Lembro que isso foi realmente útil quando comecei.
Helsing
1
@BenAubin, embora seja verdade, a beleza do Rails é não ter que escrever continuamente clichê.
Romuloux 19/07

Respostas:

596

TL; DR :rails g scaffold_controller <name>

Mesmo que você já tenha um modelo, ainda pode gerar os arquivos necessários de controlador e migração usando a rails generateopção Se você executar, rails generate -hpoderá ver todas as opções disponíveis.

Rails:
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  observer
  performance_test
  plugin
  resource
  scaffold
  scaffold_controller
  session_migration
  stylesheets

Se você deseja gerar um andaime de controlador para o seu modelo, consulte scaffold_controller. Apenas para maior clareza, aqui está a descrição disso:

Destaca um controlador de andaime e suas visualizações. Passe o nome do modelo, CamelCased ou under_scored, e uma lista de visualizações como argumentos. O nome do controlador é recuperado como uma versão pluralizada do nome do modelo.

Para criar um controlador dentro de um módulo, especifique o nome do modelo como um caminho como 'parent_module / controller_name'.

Isso gera uma classe de controlador em app / controllers e chama os geradores de auxiliar, mecanismo de modelo e estrutura de teste.

Para criar seu recurso, você usaria o resourcegerador e, para criar uma migração, também poderá ver o migrationgerador (veja, há um padrão para toda essa loucura). Eles fornecem opções para criar os arquivos ausentes e criar um recurso. Como alternativa, você pode simplesmente executar rails generate scaffoldcom a --skipopção de pular todos os arquivos existentes :)

Eu recomendo passar algum tempo olhando as opções dentro dos geradores. Eles são algo que eu não sinto documentado extremamente bem em livros e coisas assim, mas são muito úteis.

Lee Jarvis
fonte
12
uau, uma das melhores respostas que já recebi para uma pergunta de programação. obrigado!
Lan
12
Eu também tenho modelos existentes e rails generate scaffold_controller MyModelisso gera a camada de visualização, mas não inclui os atributos do modelo (colunas da tabela) e você deve adicioná-los manualmente. Alguém sabe de uma solução para isso? Estou no Rails 3.2.8.
precisa saber é o seguinte
@aaronbartell Você está pedindo ao Rails para gerar um 'scaffold_controller' que não se importa com os atributos do modelo. Isso não está quebrado, se você também deseja gerar um modelo, se deseja generate scaffoldter um modelo, mas deseja um controlador de andaime e novos atributos adicionados ao modelo que deseja, scaffold_generatorseguidos pelos migrationcampos que está alterando
Lee Jarvis
9
@Lee - Nenhum aaronbartell está perguntando como o scaffold_controller não gera as entradas de visualização correspondentes para os atributos existentes do modelo que foi passado para ele, o que é uma pergunta válida ... stackoverflow.com/q/17153864/165673
Yarin
67

Ótima resposta Lee Jarvis, este é apenas o comando, por exemplo; já temos um modelo existente chamado Usuário:

rails g scaffold_controller User
tokhi
fonte
10
Obrigado, por aqueles de nós com preguiça de ler parágrafos de texto!
precisa saber é o seguinte
30

Para aqueles que iniciam um aplicativo rails com o banco de dados existente, há uma gema interessante chamada schema_to_scaffoldpara gerar um script de andaime. produz:

rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string

do seu schema.rbnosso seu renomeado schema.rb. Confira

frenesim
fonte
2
Esta é uma grande jóia litle, vai me ajudar muito! Deve ser incorporado ao Rails!
Peter Andersson
13

No Rails 5 , você ainda pode executar

$rails generate scaffold movie --skip

para criar todos os arquivos de andaime ausentes ou

rails generate scaffold_controller Movie

para criar o controlador e visualizar apenas.

Para uma melhor explicação, verifique o andaime de trilhos

Nesha Zoric
fonte
12

Este comando deve fazer o truque:

$ rails g scaffold movie --skip
Andrew Hendrie
fonte
10

Você pode usar scaffold_controllere lembre-se de passar attributeso modelo, ou o andaime será gerado sem os atributos.

rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string

Este comando irá gerar os seguintes arquivos:

create  app/controllers/users_controller.rb
invoke  haml
create    app/views/users
create    app/views/users/index.html.haml
create    app/views/users/edit.html.haml
create    app/views/users/show.html.haml
create    app/views/users/new.html.haml
create    app/views/users/_form.html.haml
invoke  test_unit
create    test/controllers/users_controller_test.rb
invoke  helper
create    app/helpers/users_helper.rb
invoke    test_unit
invoke  jbuilder
create    app/views/users/index.json.jbuilder
create    app/views/users/show.json.jbuilder
Deepak Mahakale
fonte