Todos os exemplos de parâmetros fortes nos documentos do Rails 4 usam
params.require(:person).permit(:name, :age)
Alguém poderia agradar desconstruir e explicar o que está ocorrendo com require
e permit
aqui?
ruby-on-rails-4
Erik Trautman
fonte
fonte
permit
mas nãorequire
.Respostas:
O
params
em um controlador se parece com um Hash, mas na verdade é uma instância deActionController::Parameters
, que fornece vários métodos comorequire
epermit
.O
require
método garante que um parâmetro específico esteja presente e, se não for fornecido, orequire
método gera um erro. Retorna uma instância deActionController::Parameters
para a chave passadarequire
.O
permit
método retorna uma cópia do objeto de parâmetros, retornando apenas as chaves e valores permitidos. Ao criar um novo modelo ActiveRecord, apenas os atributos permitidos são passados para o modelo.Parece muito com a lista de desbloqueio anteriormente incluída nos modelos ActiveRecord, mas faz mais sentido que ela esteja no controlador.
fonte
true
opermitted?
método. Por padrão, uma instância daActionController::Parameters
classe retornaráfalse
parapermitted?
Respondendotrue
apermitted?
, para que o objeto de parâmetro possa ser usado na atribuição em massa; caso contrário, o aplicativo lançará um erro ForbiddenAttributes.permit
derequire
também permitir e incluem os parâmetros necessários no objeto retornado?Para ser mais preciso, quando você cria, por exemplo. Ao fazê-lo
.new(...)
, deve haver:person
hash indicado por exigir e o hash da pessoa só aceitará:name
e:age
indicado por permissão.Exemplo:
fonte
not okay
exemplos visualizam?