unpermitted strong rails parameter array ruby-on-rails ruby-on-rails-3 nested-attributes

ruby on rails - strong - Rails 3: ¿Cómo funciona "accepts_nested_attributes_for"?



strong params rails (1)

Creo que estás tratando de descubrir la creación de un nuevo elemento asociado frente a la asociación con un elemento existente.

Para crear un nuevo elemento, parece que lo tiene funcionando. Cuando pasaste la identificación en shop_attributes, no funcionó, porque está buscando una asociación que aún no existe.

Si intenta asociarse con un elemento existente, debe usar lo siguiente:

params[:product][:shop_id] = "20"

Esto asignará la tienda del producto actual a la tienda con id ''shop_id''. (El producto debe tener una columna ''shop_id'').

Considere la siguiente asociación:

class Product < ActiveRecord::Base belongs_to :shop accepts_nested_attributes_for :shop end

Si

params[:product][:shop_attributes] = {"name" => "My Shop"}

y yo hago

@product = Product.new(params[:product]) @product.save

se crea una nueva tienda con el nombre "Mi tienda" y se asigna al producto @product , como se esperaba.

Sin embargo, no puedo entender qué sucede cuando shop_attributes contiene algún id , como:

params[:product][:shop_attributes] = {"id" => "20", "name" => "My Shop"}

Obtuve el siguiente error:

Couldn''t find Shop with ID=20 for Product with ID=

Pregunta 1

Qué significa esto ?

Pregunta 2

Si este es el caso, es decir, se conoce la id de la tienda, y la tienda con dicha id ya existe, ¿cómo debo crear el producto @product para que esta tienda se le asigne?