注册时未定义的方法错误

时间:2014-07-27 01:46:13

标签: ruby-on-rails ruby params

我有一张桌子'用户'各种专栏。其中一列是用户名。我决定通过迁移删除该列。在这样做之后,我尝试通过注册表单创建一个新用户(创建操作)但是我收到了用户名的未定义方法错误,我不知道为什么。错误被@ user.save抛出。

以下是相关代码,首先是用户控制器的操作,然后是提交的实际表单。

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 %>

有什么想法?堆栈跟踪,按要求:

activemodel(4.0.5)lib / active_model / attribute_methods.rb:439:method_missing' activerecord (4.0.5) lib/active_record/attribute_methods.rb:167:in method_missing&#39; activemodel(4.0.5)lib / active_model / validator.rb:151:block in validate' activemodel (4.0.5) lib/active_model/validator.rb:150:in每个&#39; activemodel(4.0.5)lib / active_model / validator.rb:150:在validate' activerecord (4.0.5) lib/active_record/validations/presence.rb:5:in验证&#39; 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&#39; activesupport(4.0.5)lib / active_support / callbacks.rb:80:in run_callbacks' activemodel (4.0.5) lib/active_model/validations.rb:373:in run_validations!&#39; 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&#39; activesupport(4.0.5)lib / active_support / callbacks.rb:80:in run_callbacks' activemodel (4.0.5) lib/active_model/validations/callbacks.rb:106:in run_validations!&#39; activemodel(4.0.5)lib / active_model / validations.rb:314:valid?' activerecord (4.0.5) lib/active_record/validations.rb:70:in有效吗?&#39; activerecord(4.0.5)lib / active_record / validations.rb:77:in perform_validations' activerecord (4.0.5) lib/active_record/validations.rb:51:in save&#39; activerecord(4.0.5)lib / active_record / attribute_methods / dirty.rb:32:在save' activerecord (4.0.5) lib/active_record/transactions.rb:270:in块(2级)中保存&#39; activerecord(4.0.5)lib / active_record / transactions.rb:330:在事务中的block in with_transaction_returning_status' activerecord (4.0.5) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in块中&#39; 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:in transaction&#39; activerecord(4.0.5)lib / active_record / transactions.rb:209:在transaction' activerecord (4.0.5) lib/active_record/transactions.rb:327:in with_transaction_returning_status&#39; activerecord(4.0.5)lib / active_record / transactions.rb:270:in block in save' activerecord (4.0.5) lib/active_record/transactions.rb:285:in rollback_active_record_state!&#39; activerecord(4.0.5)lib / active_record / transactions.rb:269:在save' app/controllers/users_controller.rb:17:in创建&#39; actionpack(4.0.5)lib / action_controller / metal / implicit_render.rb:4:在send_action' actionpack (4.0.5) lib/abstract_controller/base.rb:189:in process_action&#39; actionpack(4.0.5)lib / action_controller / metal / rendering.rb:10:在process_action&#39;中的process_action' actionpack (4.0.5) lib/abstract_controller/callbacks.rb:18:in块中 activesupport(4.0.5)lib / active_support / callbacks.rb:403:在_run__2040789553997201778__process_action__callbacks' activesupport (4.0.5) lib/active_support/callbacks.rb:80:in run_callbacks&#39; actionpack(4.0.5)lib / abstract_controller / callbacks.rb:17:in process_action' actionpack (4.0.5) lib/action_controller/metal/rescue.rb:29:in process_action&#39; actionpack(4.0.5)lib / action_controller / metal / instrumentation.rb:31:在block in process_action' activesupport (4.0.5) lib/active_support/notifications.rb:159:in块中的仪器&#39; activesupport(4.0.5)lib / active_support / notifications / instrumenter.rb:20:in instrument' activesupport (4.0.5) lib/active_support/notifications.rb:159:in instrument&#39; actionpack(4.0.5)lib / action_controller / metal / instrumentation.rb:30:在process_action' actionpack (4.0.5) lib/action_controller/metal/params_wrapper.rb:250:in process_action&#39; 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:in进程&#39; actionpack(4.0.5)lib / abstract_controller / rendering.rb:44:在process' actionpack (4.0.5) lib/action_controller/metal.rb:195:in dispatch&#39; actionpack(4.0.5)lib / action_controller / metal / rack_delegation.rb:13:dispatch' actionpack (4.0.5) lib/action_controller/metal.rb:231:in阻止行动&#39; 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:in dispatch&#39; 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:in阻止调用&#39; actionpack(4.0.5)lib / action_dispatch / journey / router.rb:59:each' actionpack (4.0.5) lib/action_dispatch/journey/router.rb:59:in来电&#39; actionpack(4.0.5)lib / action_dispatch / routing / route_set.rb:674:call' rack (1.5.2) lib/rack/etag.rb:23:in来电&#39; rack(1.5.2)lib / rack / conditionalget.rb:35:in call' rack (1.5.2) lib/rack/head.rb:11:in call&#39; 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:in call&#39; rack(1.5.2)lib / rack / session / abstract / id.rb:225:在context' rack (1.5.2) lib/rack/session/abstract/id.rb:220:in电话&#39; actionpack(4.0.5)lib / action_dispatch / middleware / cookies.rb:486:call' activerecord (4.0.5) lib/active_record/query_cache.rb:36:in来电&#39; 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:in call&#39; 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&#39; activesupport(4.0.5)lib / active_support / callbacks.rb:80:in run_callbacks' actionpack (4.0.5) lib/action_dispatch/middleware/callbacks.rb:27:in call&#39; 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:in call&#39; 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:in call&#39; railties(4.0.5)lib / rails / rack / logger.rb:38:in call_app' railties (4.0.5) lib/rails/rack/logger.rb:20:in阻止通话&#39; 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:in已标记&#39; activesupport(4.0.5)lib / active_support / tagged_logging.rb:68:in tagged' railties (4.0.5) lib/rails/rack/logger.rb:20:in call&#39; actionpack(4.0.5)lib / action_dispatch / middleware / request_id.rb:21:in call' rack (1.5.2) lib/rack/methodoverride.rb:21:in call&#39; rack(1.5.2)lib / rack / runtime.rb:17:in call' activesupport (4.0.5) lib/active_support/cache/strategy/local_cache.rb:83:in call&#39; rack(1.5.2)lib / rack / lock.rb:17:in call' actionpack (4.0.5) lib/action_dispatch/middleware/static.rb:64:in call&#39; rack(1.5.2)lib / rack / sendfile.rb:112:call' railties (4.0.5) lib/rails/engine.rb:511:in来电&#39; railties(4.0.5)lib / rails / application.rb:97:in call' rack (1.5.2) lib/rack/lock.rb:17:in来电&#39; rack(1.5.2)lib / rack / content_length.rb:14:in call' rack (1.5.2) lib/rack/handler/webrick.rb:60:in service&#39;

1 个答案:

答案 0 :(得分:3)

读取堆栈跟踪,它告诉你什么是错的。看看你的User课程。也许你有类似的东西:

validates_presence_of :username

validates :username, presence: true