Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Estou com dúvida no curso de Ruby on Rails - Do zero ao deploy

Olá quando vou executar o meu projeto, o seguinte erro está aparecendo. Estou utilizando ruby 2.0.0p247 com Rails 4.0.0.

class Job < ActiveRecord::Base attr_accessible :description, :title, :premium validates_presence_of :description, :title end

RuntimeError in JobsController#index attr_accessible is extracted out of Rails into a gem. Please use new recommended protection model for params(strong_parameters) or add protected_attributes to your Gemfile to use old one.

3 respostas

Amigo, o curso usa Rails 3, no Rails 4 mudaram o attr_accessible. Agora eles utilizam strong parameters.

solução!

Faala Fera! Beleza?

Seguinte, no Rails 4 eles não estão mais utilizando esse attr_accessible, agora você realiza o controle dos parâmetros no seu controller!

Faça o seguinte, na sua app, existe o diretório app/controllers/jobs_controller.rb, se você descer até lá em baixo, existe uma função assim:

def job_params
      params.require(:job).permit(:title, :description)
    end

Dentro deste método permit é onde você irá colocar os parâmetros que sua classe job irá receber! Isso está funcionando no lugar do attr_accessible, portanto, caso você queira adicionar o campo :premium, como manda no exercício, basta fazer isso:

def job_params
      params.require(:job).permit(:title, :description, :premium)
    end

Então a sua classe job não vai ter mais o attr_accessible, ficará apenas com o validades_presence_of, assim:

class Job < ActiveRecord::Base
    validates_presence_of :title, :description
end

No Rails 4, Quem está realizando o acesso dos seus parâmetros é o seu controller :)

Espero ter ajudado!

Abraços!

Grande ajudaa Felipe! Abração