Rails 4 não atualizando atributos aninhados via JSON
Eu pesquisei questões relacionadas e ainda tenho um problema ao atualizar os atributos aninhados nos rails 4 a JSON retornados do meu front-end do AngularJS.
Questão: O código abaixo descreve o JSON passado do AngularJS para o modelo Candidate no meu aplicativo Rails4. O modelo Candidate tem muitos Works e estou tentando atualizar o modelo do Works por meio do modelo Candidate. Por algum motivo, o modelo do Works não é atualizado, e espero que alguém possa apontar o que está perdendo. Obrigado pela ajuda.
Aqui está o json no front-end do AngularJS para o candidato:
{"id"=>"13", "nickname"=>"New Candidate", "works_attributes"=>[
{"title"=>"Financial Analyst", "description"=>"I did things"},
{"title"=>"Accountant", "description"=>"I did more things"}]}
O Rails então traduz esse JSON para o seguinte, adicionando o cabeçalho candidato, mas não inclui os atributos aninhados no cabeçalho candidato eFalha ao atualizar os works_attributes através do 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"}}
O candidate_controller.rb contém uma atualização simples:
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
O modelo candidate.rb inclui o seguinte código que define o relacionamento has_many com o modelo de trabalho:
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
E finalmente, o modelo works.rb define o outro lado do relacionamento has_many:
class Work < ActiveRecord::Base
belongs_to :candidate
end
Agradeço qualquer ajuda que você possa fornecer, pois tenho certeza de que estou perdendo algo bastante simples.
Obrigado!