关于rails上的ruby:注册时未定义的方法错误

Undefined method error on signup

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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>
   
      <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>

   
    <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:in method_missing'
activerecord (4.0.5) lib/active_record/attribute_methods.rb:167:in
method_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:in
each'
activemodel(4.0.5)lib / active_model / validator.rb:150:in validate'
activerecord (4.0.5) lib/active_record/validations/presence.rb:5:in
validate'
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:in
run_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:in
run_validations!'
activemodel(4.0.5)lib / active_model / validations.rb:314:valid?'
activerecord (4.0.5) lib/active_record/validations.rb:70:in
有效吗?'
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'
activerecord(4.0.5)lib / active_record / attribute_methods / dirty.rb:32:in save'
activerecord (4.0.5) lib/active_record/transactions.rb:270:in
block(2级)in save'
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
块中
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'
activerecord(4.0.5)lib / active_record / transactions.rb:209:in transaction'
activerecord (4.0.5) lib/active_record/transactions.rb:327:in
with_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:in
rollback_active_record_state!'
activerecord(4.0.5)lib / active_record / transactions.rb:269:in save'
app/controllers/users_controller.rb:17:in
create'
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:in
process_action'
actionpack(4.0.5)lib / action_controller / metal / rendering.rb:10:在process_action中的process_action'
actionpack (4.0.5) lib/abstract_controller/callbacks.rb:18:in
块中
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:in
run_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:in
process_action'
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
块中的仪器'
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'
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'中
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
process'
actionpack(4.0.5)lib / abstract_controller / rendering.rb:44:in process'
actionpack (4.0.5) lib/action_controller/metal.rb:195:in
dispatch'
actionpack(4.0.5)lib / action_controller / metal / rack_delegation.rb:13:in dispatch'
actionpack (4.0.5) lib/action_controller/metal.rb:231:in
block 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:in
dispatch'
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
block 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:in
call'
actionpack(4.0.5)lib / action_dispatch / routing / route_set.rb:674:in call'
rack (1.5.2) lib/rack/etag.rb:23:in
call'
rack(1.5.2)lib / rack / conditionalget.rb:35:in call'
rack (1.5.2) lib/rack/head.rb:11:in
call'
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'
rack(1.5.2)lib / rack / session / abstract / id.rb:225:in context'
rack (1.5.2) lib/rack/session/abstract/id.rb:220:in
call'
actionpack(4.0.5)lib / action_dispatch / middleware / cookies.rb:486:in call'
activerecord (4.0.5) lib/active_record/query_cache.rb:36:in
call'
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'
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:in
call'
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'
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'
railties(4.0.5)lib / rails / rack / logger.rb:38:in call_app'
railties (4.0.5) lib/rails/rack/logger.rb:20:in
block 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:in
tagged'
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'
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'
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'
rack(1.5.2)lib / rack / lock.rb:17:in call'
actionpack (4.0.5) lib/action_dispatch/middleware/static.rb:64:in
call'
rack(1.5.2)lib / rack / sendfile.rb:112:in call'
railties (4.0.5) lib/rails/engine.rb:511:in
call'
railties(4.0.5)lib / rails / application.rb:97:in call'
rack (1.5.2) lib/rack/lock.rb:17:in
call'
rack(1.5.2)lib / rack / content_length.rb:14:in call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in
service'


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

1
validates_presence_of :username

要么

1
validates :username, presence: true