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

Quando utilizo attr_accessible, minha aplicação da erro.

Sempre que eu utilizo att_accessible minha aplicação da erro, mas quando eu retiro essa linha ela funciona. Porém sem essa linha não tem como eu declarar o campos premium.

undefined method `attr_accessible' for # Extracted source (around line #2):

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

Rails.root: /Users/marcelolop3s/job_board

5 respostas
solução!

Pesquisei ... E resolvi !!!

Então brother.... Eu vi o outro tópico mas não consegui resolver !!! Poderia postar a solução, estou com o mesmo problema que o seu.

Obrigado.

Olá Eduardo,

Desculpe pela demora, basta você ir em jobs_controller e antes de fechar o ultimo end colocar os atributos desta forma:

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

Assim sendo no create por exemplo você insere os parametros chamando essa action por exemplo:

def create @job = Job.new(job_params)

Espero ter ajudado !!!

Ok, já tinha conseguido resolver. Muito Obrigado.

Amigo, o Rails 4 trabalha com um método chamado Strong Parameters. A partir do Rails 4 não se usa mais atrr_acessible nos forms, e a autorização se dá através do próprio controller.

Assim no Rails 4+ o parametro attr_acessible deve ser retirado dos forms.

Isso causa um problema maior, pois apenas retirando os attr_acessible a aplicação roda, mas não autoriza a mudança de parâmetros adicionados depois, como o exemplo "Premium" do exercício.

então o próprio formulário, mesmo contendo a checkbox Premium, não valida o job como Premium.

para autorizar a form a fazer essa modificação, é necessário entrar no Job controller e permitir que a alteração seja feita em

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

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