Got ActiveRecord::AssociationTypeMismatch on model save
activerecord, rest, ruby-on-rails, ruby-on-rails-3
Solution
The problem is in the JSON structure, Rails expects `tasks_attributes`, not `tasks` . Check this question for details.
Problem
I got a problem on saving model with my rest API. I have a Card model with many tasks and one Customer associated : ``` class Card < ActiveRecord::Base belongs_to :customer has_many :card_tasks has_many :tasks, :through => :card_tasks accepts_nested_attributes_for :tasks accepts_nested_attributes_for :card_tasks accepts_nested_attributes_for :customer end class CardTask < ActiveRecord::Base belongs_to :task belongs_to :card accepts_nested_attributes_for :task accepts_nested_attributes_for :card end class Task < ActiveRecord::Base has_many :cards, :through => :card_tasks has_many :card_tasks end ``` When i send a json like this : ``` { "card" = > { "miscellaneous" = > "Obervations diverses", "heater" = > "0", "water_quality" = > "", "customer" = > { "id" = > "2", "house_name" = > "house_name2", "city" = > "city_2", "lastname" = > "lastname2", "sci" = > "sci2", "postal_code" = > "potal_code_2", "address_line_1" = > "address_line_2", "updated_at" = > "2012-03-05 18:20:57 +0000", "created_at" = > "2012-03-05 18:20:54 +0000", "firstname" = > "firstname2", "address_line_2" = > "address_line_3", "water_used" = > "0" }, "tasks" = > [ { "title" = > "Nettoyage ligne eau", "id" = > "6", "updated_at" = > "2012-02-17 08:40:47 +0000", "created_at" = > "2012-02-17 08:40:47 +0000" }, { "title" = > "Surveillance", "id" = > "4", "updated_at" = > "2012-02-17 08:40:47 +0000", "created_at" = > "2012-02-17 08:40:47 +0000" } ] } } ``` My create action : ``` def create card = Card.new(params[:card]) if (card.save) respond_with({ :card => card} , :location => nil, status: :created) and return end respond_with({ :errors => card.errors }, :location => nil, status: :unprocessable_entity) and return end ``` When doing this, i got a : ``` ActiveRecord::AssociationTypeMismatch (Task(#70249431354580) expected, got ActiveSupport::HashWithIndifferentAccess(#70249421573300)): app/controllers/cards_controller.rb:14:in `new' app/controllers/cards_controller.rb:14:in `create' ``` What did i do wrong?