Zack
Zack

Reputation: 671

Undefined method error on signup

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'

Upvotes: 3

Views: 227

Answers (1)

Nick Veys
Nick Veys

Reputation: 23939

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

Upvotes: 3

Related Questions