1
resposta

Pesquisa Avançada Rails

Estou fazendo um formulário de pesquisa avançada para o meu sistema. Eu quero pesquisar parâmetros de dois modelos que estão relacionados entre si:

Modelo Aviso:

class Aviso < ApplicationRecord
    belongs_to :usuario
end

Modelo Usuario:

class Usuario < ApplicationRecord
    has_many :aviso
end

Cujos conteúdos no migrate são: Avisos

class CreateAvisos < ActiveRecord::Migration[5.1]
  def change
    create_table :avisos do |t|
      t.integer :usuario_id
      t.text :texto

      t.timestamps
    end
  end
end

Usuarios

class CreateUsuarios < ActiveRecord::Migration[5.1]
  def change
    create_table :usuarios do |t|
      t.string :nome
      t.integer :apartamento
      t.string :email
      t.integer :funcao

      t.timestamps
    end
  end
end

Para criar a pesquisa avançada, resolvi criar um model e um controller especiais para a pesquisa, conforme os comandos abaixo no terminal do rails:

#https://stackoverflow.com/questions/11609005/ruby-on-rails-advanced-search

rails g model pesquisa_aviso texto_pesquisa:string nome_autor:string id_autor:integer data_min_autor:date data_max_autor:date

rails g controller pesquisa_aviso

#(no controller eu coloco no singular ou no plural??)

rails db:migrate

O erro apresentado é o descrito a seguir:

ActiveRecord::PendingMigrationError
Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=development 

O que fazer ou, se for possível, alguém pode me mandar um passo a passo descrito com detalhes?

Desde já agradeço.

1 resposta

Roda a linha que o erro pediu pra você rodar que deve resolver seu problema.

Porque criar um model? Você quer guardar algum tipo de histórico?

Porque pra pesquisa na teoria você não precisa de model nenhum.

Outra coisa também o seu has_many é bom ser pluralizado afinal são mais de um:

has_many :avisos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software