I’ve been getting the UnkownAttributeError for no particular reason, my models seem to be setup correctly…
School.rb
class School < ActiveRecord::Base
attr_protected :id, :created_at, :updated_at
#relationships
has_many :users
accepts_nested_attributes_for :users
end
My School model used to have the following, but it produced a MassAssignmentSecurity error for the user fields:
attr_accessible :country, :name, :state_or_province, :users_attributes
User.rb
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation, :remember_me, :username, :instructor_id, :first_name, :last_name, :school_id
#relationships
belongs_to :school
end
new.html.haml
= simple_form_for @school do |f|
.well
= f.input :name, :as => :hidden
= f.input :country, :as => :hidden
= f.input :state_or_province, :as => :hidden
.well
= f.simple_fields_for @school.users.build do |user_form|
= user_form.input :first_name, :required => true
= user_form.input :last_name, :required => true
= user_form.input :username, :required => true
...
= f.button :submit, "Next"
Note: @school is being populated in my new action from session information gathered on the previous page, I’m making a multi-step form. The school data is perfectly valid, if I was to remove the user form it would have no trouble saving the school.
The specific error message I’m getting in my create action:
ActiveRecord::UnknownAttributeError in SchoolsController#create
unknown attribute: user
And the sent params looks a little like this:
{“school”=>{“name”=>”Elmwood Elementary”, “country”=>”38”,
“state_or_province”=>”448”, “user”=>{“first_name”=>”joe”,
“last_name”=>”asdas”, “username”=>”asasdads”,
“email”=>”asdasd@sdas.ca”, “password”=>”[FILTERED]”,
“password_confirmation”=>”[FILTERED]”}}, “commit”=>”Next”}
Is this maybe a bug with either Devise or simple_form? I’m using Rails 3.2.3
Ok, so apparently I needed to provide the symbol
:users– the name of the relationship as my first argument for it to work.