Hey guys & ladies!

I've got the following relationship which i'm trying to get
accepts_nested_attributes to work with. But when i submit my form, it
looks as if its expecting a Company object, rather than an array of
companies. which really doesn't make sense considering its a
has_many :relationship.

So what i'm after, is a way to
accept_nested_attributes_for :companies, so when my users sign up to
the website, they can also create a company.

-------------- user.rb

class User < ActiveRecord::Base
  has_many :company_users
  has_many :companies, :through => :company_users

  accepts_nested_attributes_for :companies
end

-------------- company.rb

class Company < ActiveRecord::Base
  has_many :company_users
  has_many :users, :through => :company_users
end

--------------  company_user.rb
class CompanyUser < ActiveRecord::Base
  belongs_to :user
  belongs_to :company
end


--------------  My form

<% form_for :user, :url => users_path do |f| -%>

<p><%= label_tag 'First name' %>
<%= f.text_field :firstname %></p>

<p><%= label_tag 'Surname' %>
<%= f.text_field :surname %></p>

<p><%= label_tag 'email' %>
<%= f.text_field :email %></p>

<p><%= label_tag 'password' %>
<%= f.password_field :password %></p>

<p><%= label_tag 'password_confirmation', 'Confirm Password' %>
<%= f.password_field :password_confirmation %></p>

        <h2>Company Information</h2>
        <% f.fields_for :companies do |company| %>
                        <%= render 'companies/fields', :f => company %>
         <% end %>

<p class="submit"><%= submit_tag 'Sign up' %></p>
<% end -%>


--------------  The error

 ActiveRecord::AssociationTypeMismatch in UsersController#create

Company(#2180266380) expected, got Array(#2148226700)

RAILS_ROOT: /Users/mark/Programming/ruby/s/

/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_proxy.rb:263:in `raise_on_type_mismatch'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:320:in `replace'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:320:in `each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:320:in `replace'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations.rb:1322:in `companies='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2744:in `send'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2744:in `attributes='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2740:in `each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2740:in `attributes='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2438:in `initialize'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:1331:in `send'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:1331:in `perform_action_without_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
filters.rb:617:in `call_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
filters.rb:610:in `perform_action_without_benchmark'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
benchmarking.rb:68:in `perform_action_without_rescue'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/
core_ext/benchmark.rb:17:in `ms'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/
core_ext/benchmark.rb:17:in `ms'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
benchmarking.rb:68:in `perform_action_without_rescue'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
rescue.rb:160:in `perform_action_without_flash'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
flash.rb:146:in `perform_action'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:532:in `send'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:532:in `process_without_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
filters.rb:606:in `process'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:391:in `process'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:386:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
routing/route_set.rb:437:in `call'

/Users/mark/Programming/ruby/s/app/controllers/users_controller.rb:
27:in `new'
/Users/mark/Programming/ruby/s/app/controllers/users_controller.rb:
27:in `create'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/
1.8/benchmark.rb:308:in `realtime'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:87:in `dispatch'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:121:in `_call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:130:in `build_middleware_stack'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:114:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:108:in `call'

/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_proxy.rb:263:in `raise_on_type_mismatch'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:320:in `replace'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:320:in `each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations/association_collection.rb:320:in `replace'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
associations.rb:1322:in `companies='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2744:in `send'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2744:in `attributes='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2740:in `each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2740:in `attributes='
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
base.rb:2438:in `initialize'
/Users/mark/Programming/ruby/s/app/controllers/users_controller.rb:
27:in `new'
/Users/mark/Programming/ruby/s/app/controllers/users_controller.rb:
27:in `create'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:1331:in `send'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:1331:in `perform_action_without_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
filters.rb:617:in `call_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
filters.rb:610:in `perform_action_without_benchmark'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
benchmarking.rb:68:in `perform_action_without_rescue'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/
core_ext/benchmark.rb:17:in `ms'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/
1.8/benchmark.rb:308:in `realtime'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.4/lib/active_support/
core_ext/benchmark.rb:17:in `ms'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
benchmarking.rb:68:in `perform_action_without_rescue'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
rescue.rb:160:in `perform_action_without_flash'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
flash.rb:146:in `perform_action'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:532:in `send'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:532:in `process_without_filters'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
filters.rb:606:in `process'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:391:in `process'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
base.rb:386:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
routing/route_set.rb:437:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:87:in `dispatch'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:121:in `_call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:130:in `build_middleware_stack'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
query_cache.rb:29:in `call'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
query_cache.rb:29:in `call'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
connection_adapters/abstract/query_cache.rb:34:in `cache'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
query_cache.rb:9:in `cache'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
query_cache.rb:28:in `call'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.4/lib/active_record/
connection_adapters/abstract/connection_pool.rb:361:in `call'
/Library/Ruby/Gems/1.8/gems/rack-1.0.1/lib/rack/head.rb:9:in `call'
/Library/Ruby/Gems/1.8/gems/rack-1.0.1/lib/rack/methodoverride.rb:
24:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
params_parser.rb:15:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
session/cookie_store.rb:93:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
failsafe.rb:26:in `call'
/Library/Ruby/Gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
/Library/Ruby/Gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in
`synchronize'
/Library/Ruby/Gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:114:in `call'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
reloader.rb:34:in `run'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/
dispatcher.rb:108:in `call'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/rack/
request_handler.rb:92:in `process_request'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_request_handler.rb:207:in `main_loop'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
railz/application_spawner.rb:400:in `start_request_handler'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
railz/application_spawner.rb:351:in `handle_spawn_application'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
utils.rb:184:in `safe_fork'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
railz/application_spawner.rb:349:in `handle_spawn_application'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server.rb:352:in `__send__'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server.rb:352:in `main_loop'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server.rb:196:in `start_synchronously'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server.rb:163:in `start'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
railz/application_spawner.rb:209:in `start'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
spawn_manager.rb:262:in `spawn_rails_application'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server_collection.rb:126:in `lookup_or_add'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
spawn_manager.rb:256:in `spawn_rails_application'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server_collection.rb:80:in `synchronize'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server_collection.rb:79:in `synchronize'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
spawn_manager.rb:255:in `spawn_rails_application'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
spawn_manager.rb:154:in `spawn_application'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
spawn_manager.rb:287:in `handle_spawn_application'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server.rb:352:in `__send__'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server.rb:352:in `main_loop'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/lib/phusion_passenger/
abstract_server.rb:196:in `start_synchronously'
/Library/Ruby/Gems/1.8/gems/passenger-2.2.9/bin/passenger-spawn-server:
61

Request

Parameters:

{"commit"=>"Sign up",
 "user"=>{"password_confirmation"=>"12341234",
 "companies"=>{"name"=>"1234"},
 "firstname"=>"driver",
 "surname"=>"asdf",
 "password"=>"12341234",
 "email"=>"a...@asdf.com"}}

Show session dump

---

Response

Headers:

{"Content-Type"=>"",
 "Cache-Control"=>"no-cache"}




------------------------------------------------------

Thanks for reading. sorry about the length.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to