Rails 4 no actualiza los atributos anidados a través de JSON
He rastreado preguntas relacionadas y todavía tengo problemas para actualizar los atributos anidados en los rieles 4 a través de JSON devueltos desde mi interfaz de AngularJS.
Pregunta: El siguiente código describe el JSON pasado de AngularJS al modelo Candidato en mi aplicación Rails4. El modelo de Candidato tiene muchos trabajos, y estoy intentando actualizar el modelo de Works a través del modelo de Candidato. Por alguna razón, el modelo de Works no se actualiza, y espero que alguien pueda señalar lo que me estoy perdiendo. Gracias por tu ayuda.
Aquí está el json en el front-end de AngularJS para el candidato:
{"id"=>"13", "nickname"=>"New Candidate", "works_attributes"=>[
{"title"=>"Financial Analyst", "description"=>"I did things"},
{"title"=>"Accountant", "description"=>"I did more things"}]}
Rails luego traduce este JSON al siguiente agregando el encabezado candidato, pero no incluye los atributos anidados debajo del encabezado candidato yfalla al actualizar los atributos_trabajo a través del modelo candidato:
{"id"=>"13", "nickname"=>"New Candidate", "works_attributes"=>[
{"title"=>"Financial Analyst", "description"=>"I did things"},
{"title"=>"Accountant", "description"=>"I did more things"}],
"candidate"=>{"id"=>"13", "nickname"=>"New Candidate"}}
El candidato_controller.rb contiene una actualización simple:
class CandidatesController < ApplicationController
before_filter :authenticate_user!
respond_to :json
def update
respond_with Candidate.update(params[:id], candidate_params)
end
private
def candidate_params
params.require(:candidate).permit(:nickname,
works_attributes: [:id, :title, :description])
end
end
El modelo candidato.rb incluye el siguiente código que define la relación has_many con el modelo de trabajos:
class Candidate < ActiveRecord::Base
## Model Relationships
belongs_to :users
has_many :works, :dependent => :destroy
## Nested model attributes
accepts_nested_attributes_for :works, allow_destroy: true
## Validations
validates_presence_of :nickname
validates_uniqueness_of :user_id
end
Y finalmente, el modelo works.rb define el otro lado de la relación has_many:
class Work < ActiveRecord::Base
belongs_to :candidate
end
Aprecio cualquier ayuda que pueda proporcionar ya que estoy seguro de que me estoy perdiendo algo bastante simple.
¡Gracias!