3
votes

I have a table 'Users' with various columns. One of those columns was username. I decided to remove the column with a migration. After doing so, I tried to create a new User via a signup form (create action) but am getting an undefined method error for username and I'm not sure why. The error is being thrown on @user.save.

Here is the relevant code, first the users controller's actions, and then the actual form being submitted.

def user_params
  params.require(:user).permit(:name, :email, :password, :password_confirmation)
end

def create
  @user = User.new(user_params)
  if @user.save
    session[:user_id] = @user.id
    redirect_to @user, notice: 'Thank you for registering!'
  else
    render :new 
  end
end

<%= form_for(@user) do |f| %>
  <%= render "shared/errors", object: @user %>
  <fieldset>
    <ol>
      <li class="required">
        <%= f.label :name %>
        <%= f.text_field :name, size: 40, autofocus: true %>
      </li>
      <li class="required">
        <%= f.label :email %>
        <%= f.email_field :email, size: 40 %>
      </li>
      <li class="required">
        <%= f.label :password %>
        <%= f.password_field :password, size: 40 %>
      </li>
      <li class="required">
        <%= f.label :password_confirmation, "Confirm Password" %>
        <%= f.password_field :password_confirmation, size: 40 %>
      </li>
    </ol>
    <p>
      <% if @user.new_record? %>
        <%= f.submit "Create Account" %>
      <% else %>
        <%= f.submit "Update Account" %>
      <% end %>
    </p>
  </fieldset>
<% end %>

Any thoughts? Stack trace, as requested:

activemodel (4.0.5) lib/active_model/attribute_methods.rb:439:in method_missing' activerecord (4.0.5) lib/active_record/attribute_methods.rb:167:inmethod_missing' activemodel (4.0.5) lib/active_model/validator.rb:151:in block in validate' activemodel (4.0.5) lib/active_model/validator.rb:150:ineach' activemodel (4.0.5) lib/active_model/validator.rb:150:in validate' activerecord (4.0.5) lib/active_record/validations/presence.rb:5:invalidate' activesupport (4.0.5) lib/active_support/callbacks.rb:283:in _callback_before_609' activesupport (4.0.5) lib/active_support/callbacks.rb:447:in_run__3888567514204995588__validate__callbacks' activesupport (4.0.5) lib/active_support/callbacks.rb:80:in run_callbacks' activemodel (4.0.5) lib/active_model/validations.rb:373:inrun_validations!' activemodel (4.0.5) lib/active_model/validations/callbacks.rb:106:in block in run_validations!' activesupport (4.0.5) lib/active_support/callbacks.rb:373:in_run__3888567514204995588__validation__callbacks' activesupport (4.0.5) lib/active_support/callbacks.rb:80:in run_callbacks' activemodel (4.0.5) lib/active_model/validations/callbacks.rb:106:inrun_validations!' activemodel (4.0.5) lib/active_model/validations.rb:314:in valid?' activerecord (4.0.5) lib/active_record/validations.rb:70:invalid?' activerecord (4.0.5) lib/active_record/validations.rb:77:in perform_validations' activerecord (4.0.5) lib/active_record/validations.rb:51:insave' activerecord (4.0.5) lib/active_record/attribute_methods/dirty.rb:32:in save' activerecord (4.0.5) lib/active_record/transactions.rb:270:inblock (2 levels) in save' activerecord (4.0.5) lib/active_record/transactions.rb:330:in block in with_transaction_returning_status' activerecord (4.0.5) lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction' activerecord (4.0.5) lib/active_record/connection_adapters/abstract/database_statements.rb:221:in within_new_transaction' activerecord (4.0.5) lib/active_record/connection_adapters/abstract/database_statements.rb:213:intransaction' activerecord (4.0.5) lib/active_record/transactions.rb:209:in transaction' activerecord (4.0.5) lib/active_record/transactions.rb:327:inwith_transaction_returning_status' activerecord (4.0.5) lib/active_record/transactions.rb:270:in block in save' activerecord (4.0.5) lib/active_record/transactions.rb:285:inrollback_active_record_state!' activerecord (4.0.5) lib/active_record/transactions.rb:269:in save' app/controllers/users_controller.rb:17:increate' actionpack (4.0.5) lib/action_controller/metal/implicit_render.rb:4:in send_action' actionpack (4.0.5) lib/abstract_controller/base.rb:189:inprocess_action' actionpack (4.0.5) lib/action_controller/metal/rendering.rb:10:in process_action' actionpack (4.0.5) lib/abstract_controller/callbacks.rb:18:inblock in process_action' activesupport (4.0.5) lib/active_support/callbacks.rb:403:in _run__2040789553997201778__process_action__callbacks' activesupport (4.0.5) lib/active_support/callbacks.rb:80:inrun_callbacks' actionpack (4.0.5) lib/abstract_controller/callbacks.rb:17:in process_action' actionpack (4.0.5) lib/action_controller/metal/rescue.rb:29:inprocess_action' actionpack (4.0.5) lib/action_controller/metal/instrumentation.rb:31:in block in process_action' activesupport (4.0.5) lib/active_support/notifications.rb:159:inblock in instrument' activesupport (4.0.5) lib/active_support/notifications/instrumenter.rb:20:in instrument' activesupport (4.0.5) lib/active_support/notifications.rb:159:ininstrument' actionpack (4.0.5) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (4.0.5) lib/action_controller/metal/params_wrapper.rb:250:inprocess_action' activerecord (4.0.5) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (4.0.5) lib/abstract_controller/base.rb:136:inprocess' actionpack (4.0.5) lib/abstract_controller/rendering.rb:44:in process' actionpack (4.0.5) lib/action_controller/metal.rb:195:indispatch' actionpack (4.0.5) lib/action_controller/metal/rack_delegation.rb:13:in dispatch' actionpack (4.0.5) lib/action_controller/metal.rb:231:inblock in action' actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:80:in call' actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:80:indispatch' actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:48:in call' actionpack (4.0.5) lib/action_dispatch/journey/router.rb:71:inblock in call' actionpack (4.0.5) lib/action_dispatch/journey/router.rb:59:in each' actionpack (4.0.5) lib/action_dispatch/journey/router.rb:59:incall' actionpack (4.0.5) lib/action_dispatch/routing/route_set.rb:674:in call' rack (1.5.2) lib/rack/etag.rb:23:incall' rack (1.5.2) lib/rack/conditionalget.rb:35:in call' rack (1.5.2) lib/rack/head.rb:11:incall' actionpack (4.0.5) lib/action_dispatch/middleware/params_parser.rb:27:in call' actionpack (4.0.5) lib/action_dispatch/middleware/flash.rb:241:incall' rack (1.5.2) lib/rack/session/abstract/id.rb:225:in context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:incall' actionpack (4.0.5) lib/action_dispatch/middleware/cookies.rb:486:in call' activerecord (4.0.5) lib/active_record/query_cache.rb:36:incall' activerecord (4.0.5) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in call' activerecord (4.0.5) lib/active_record/migration.rb:373:incall' actionpack (4.0.5) lib/action_dispatch/middleware/callbacks.rb:29:in block in call' activesupport (4.0.5) lib/active_support/callbacks.rb:373:in_run__1209442307347215813__call__callbacks' activesupport (4.0.5) lib/active_support/callbacks.rb:80:in run_callbacks' actionpack (4.0.5) lib/action_dispatch/middleware/callbacks.rb:27:incall' actionpack (4.0.5) lib/action_dispatch/middleware/reloader.rb:64:in call' actionpack (4.0.5) lib/action_dispatch/middleware/remote_ip.rb:76:incall' actionpack (4.0.5) lib/action_dispatch/middleware/debug_exceptions.rb:17:in call' actionpack (4.0.5) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.0.5) lib/rails/rack/logger.rb:38:in call_app' railties (4.0.5) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.0.5) lib/active_support/tagged_logging.rb:68:in block in tagged' activesupport (4.0.5) lib/active_support/tagged_logging.rb:26:intagged' activesupport (4.0.5) lib/active_support/tagged_logging.rb:68:in tagged' railties (4.0.5) lib/rails/rack/logger.rb:20:incall' actionpack (4.0.5) lib/action_dispatch/middleware/request_id.rb:21:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:incall' rack (1.5.2) lib/rack/runtime.rb:17:in call' activesupport (4.0.5) lib/active_support/cache/strategy/local_cache.rb:83:incall' rack (1.5.2) lib/rack/lock.rb:17:in call' actionpack (4.0.5) lib/action_dispatch/middleware/static.rb:64:incall' rack (1.5.2) lib/rack/sendfile.rb:112:in call' railties (4.0.5) lib/rails/engine.rb:511:incall' railties (4.0.5) lib/rails/application.rb:97:in call' rack (1.5.2) lib/rack/lock.rb:17:incall' rack (1.5.2) lib/rack/content_length.rb:14:in call' rack (1.5.2) lib/rack/handler/webrick.rb:60:inservice'

1
Post the stack trace, it will tell you where the error is happening.Nick Veys
Stack trace edited in post above.Zack
The whole stack trace, not just one line of it. The information is in there somewhere.Nick Veys

1 Answers

3
votes

Read the stack trace, it tells you what's wrong. Take a peek in your User class. Maybe you have something like:

validates_presence_of :username

or

validates :username, presence: true