Dans le modèle Topic
:accepte_nested_attributes_for alias?
class Topic < ActiveRecord::Base
has_many :choices, :dependent => :destroy
accepts_nested_attributes_for :choices
attr_accessible :title, :choices
end
Au cours d'un POST créer, le params
soumis est :choices
, au lieu de :choices_attributes
attendu par Rails et donnant une erreur:
ActiveRecord::AssociationTypeMismatch (Choice(#70365943501680) expected,
got ActiveSupport::HashWithIndifferentAccess(#70365951899600)):
est-il un moyen de config accepts_nested_attributes_for
accepter les paramètres passant comme choices
au lieu de choices_attributes
dans un appel JSON?
Actuellement, je l'ai fait la création d'attributs dans le contrôleur (qui ne semble pas être une solution élégante):
def create
choices = params[:topic].delete(:choices)
@topic = Topic.new(params[:topic])
if choices
choices.each do |choice|
@topic.choices.build(choice)
end
end
if @topic.save
render json: @topic, status: :created, location: @topic
else
render json: @topic.errors, status: :unprocessable_entity
end
end