ruby-on-rails - 注册时发生未定义的方法错误

标签 ruby-on-rails ruby params

我有一个包含不同列的“users”表。其中一列是username。我决定迁移这个列。在这样做之后,我试图通过注册表单(create action)创建一个新用户,但是得到了一个未定义的用户名方法错误,我不知道为什么。在@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 %>

有什么想法吗?堆栈跟踪,按要求:
active model(4.0.5)lib/active_model/attribute_methods.rb:439:inmethod_missing' activerecord (4.0.5) lib/active_record/attribute_methods.rb:167:inmethod_missing'
active model(4.0.5)lib/active_model/validator.rb:151:inblock in validate' activemodel (4.0.5) lib/active_model/validator.rb:150:in每个
active model(4.0.5)lib/active_model/validator.rb:150:invalidate' activerecord (4.0.5) lib/active_record/validations/presence.rb:5:invalidate'
active support(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_u3888567514204995588_uu validate_uu callbacks'
active support(4.0.5)lib/active_support/callbacks.rb:80:inrun_callbacks' activemodel (4.0.5) lib/active_model/validations.rb:373:inrun_validations!'
active model(4.0.5)lib/active_model/validations/callbacks.rb:106:inblock in run_validations!' activesupport (4.0.5) lib/active_support/callbacks.rb:373:inu run_u 3888567514204995588_u validation_u callbacks'
active support(4.0.5)lib/active_support/callbacks.rb:80:inrun_callbacks' activemodel (4.0.5) lib/active_model/validations/callbacks.rb:106:inrun_validations!'
active model(4.0.5)lib/active_model/validations.rb:314:invalid?' activerecord (4.0.5) lib/active_record/validations.rb:70:in有效吗?
活动记录(4.0.5)库/活动记录/验证。rb:77:inperform_validations' activerecord (4.0.5) lib/active_record/validations.rb:51:insave'
active record(4.0.5)lib/active_record/attribute_methods/dirty.rb:32:insave' activerecord (4.0.5) lib/active_record/transactions.rb:270:in块(2级)in save'
活动记录(4.0.5)lib/active_record/transactions.rb:330:inblock in with_transaction_returning_status' activerecord (4.0.5) lib/active_record/connection_adapters/abstract/database_statements.rb:213:inblock in transaction'
active record(4.0.5)lib/active_record/connection_adapters/abstract/database_语句。rb:221:inwithin_new_transaction' activerecord (4.0.5) lib/active_record/connection_adapters/abstract/database_statements.rb:213:in事务
活动记录(4.0.5)lib/active_record/transactions.rb:209:intransaction' activerecord (4.0.5) lib/active_record/transactions.rb:327:inwith_transaction_returning_status'
active record(4.0.5)lib/active_record/transactions.rb:270:inblock in save' activerecord (4.0.5) lib/active_record/transactions.rb:285:inrollback_active_record_state!'
active record(4.0.5)库/活动记录/事务。rb:269:insave' app/controllers/users_controller.rb:17:increate'
actionpack(4.0.5)库/动作控制器/金属/隐式渲染。rb:4:insend_action' actionpack (4.0.5) lib/abstract_controller/base.rb:189:in过程动作'
actionpack(4.0.5)lib/action_controller/metal/rendering.rb:10:inprocess_action' actionpack (4.0.5) lib/abstract_controller/callbacks.rb:18:inblock-in-process_action'
active support(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)库/抽象控制器/回调。rb:17:inprocess_action' actionpack (4.0.5) lib/action_controller/metal/rescue.rb:29:inprocess\u action'
actionpack(4.0.5)lib/action_controller/metal/instrumentation.rb:31:inblock in process_action' activesupport (4.0.5) lib/active_support/notifications.rb:159:inblock-in-instrument'
active support(4.0.5)lib/active_support/notifications/instrumenter.rb:20:ininstrument' activesupport (4.0.5) lib/active_support/notifications.rb:159:ininstrument'
actionpack(4.0.5)库/动作控制器/金属/仪表。rb:30:inprocess_action' actionpack (4.0.5) lib/action_controller/metal/params_wrapper.rb:250:in过程动作'
active record(4.0.5)lib/active_record/railties/controller_runtime.rb:18:inprocess_action' actionpack (4.0.5) lib/abstract_controller/base.rb:136:in进程'
actionpack(4.0.5)库/抽象控制器/呈现。rb:44:inprocess' actionpack (4.0.5) lib/action_controller/metal.rb:195:indispatch'
actionpack(4.0.5)lib/action_controller/metal/rack_delegation.rb:13:indispatch' 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:incall' 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:incall' actionpack (4.0.5) lib/action_dispatch/journey/router.rb:71:inblock-in-call'
actionpack(4.0.5)库/action-dispatch/journey/router.rb:59:ineach' actionpack (4.0.5) lib/action_dispatch/journey/router.rb:59:incall'
actionpack(4.0.5)lib/action-dispatch/routing/route-set.rb:674:incall' rack (1.5.2) lib/rack/etag.rb:23:incall'
机架(1.5.2)lib/rack/conditionalget.rb:35:incall' rack (1.5.2) lib/rack/head.rb:11:in调用'
actionpack(4.0.5)lib/action-dispatch/middleware/params-parser.rb:27:incall' actionpack (4.0.5) lib/action_dispatch/middleware/flash.rb:241:in调用
机架(1.5.2)lib/rack/session/abstract/id.rb:225:incontext' rack (1.5.2) lib/rack/session/abstract/id.rb:220:incall'
actionpack(4.0.5)lib/action-dispatch/middleware/cookies.rb:486:incall' activerecord (4.0.5) lib/active_record/query_cache.rb:36:incall'
active record(4.0.5)库/活动记录/连接适配器/抽象/连接池。rb:626:incall' activerecord (4.0.5) lib/active_record/migration.rb:373:incall'
actionpack(4.0.5)lib/action-dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.0.5) lib/active_support/callbacks.rb:373:in\u run\uuu120944230734721513\uuuu callbacks'
active support(4.0.5)lib/active_support/callbacks.rb:80:inrun_callbacks' actionpack (4.0.5) lib/action_dispatch/middleware/callbacks.rb:27:incall'
actionpack(4.0.5)lib/action-dispatch/middleware/reloader.rb:64:incall' 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:incall' actionpack (4.0.5) lib/action_dispatch/middleware/show_exceptions.rb:30:incall'
railties(4.0.5)lib/rails/rack/logger.rb:38:incall_app' railties (4.0.5) lib/rails/rack/logger.rb:20:inblock-in-call'
active support(4.0.5)lib/active_support/tagged_logging.rb:68:inblock in tagged' activesupport (4.0.5) lib/active_support/tagged_logging.rb:26:intagged'
active support(4.0.5)lib/active_support/taged_logging.rb:68:intagged' railties (4.0.5) lib/rails/rack/logger.rb:20:incall'
actionpack(4.0.5)lib/action-dispatch/middleware/request-id.rb:21:incall' rack (1.5.2) lib/rack/methodoverride.rb:21:incall'
机架(1.5.2)lib/rack/runtime.rb:17:incall' activesupport (4.0.5) lib/active_support/cache/strategy/local_cache.rb:83:incall'
机架(1.5.2)lib/rack/lock.rb:17:incall' actionpack (4.0.5) lib/action_dispatch/middleware/static.rb:64:incall'
机架(1.5.2)lib/rack/sendfile.rb:112:incall' railties (4.0.5) lib/rails/engine.rb:511:incall'
railties(4.0.5)lib/rails/application.rb:97:incall' rack (1.5.2) lib/rack/lock.rb:17:in调用'
机架(1.5.2)lib/机架/内容长度。rb:14:incall' rack (1.5.2) lib/rack/handler/webrick.rb:60:in服务

最佳答案

读一下堆栈跟踪,它会告诉你出了什么问题。在你的User课上看一眼。也许你有这样的东西:

validates_presence_of :username


validates :username, presence: true

关于ruby-on-rails - 注册时发生未定义的方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24977182/

相关文章:

javascript - rails 3 : How to display a warning message when a link is clicked?

ruby - 使用 Middleman App 构建时忽略文件夹

css - 使用 Bootstrap 3 连续排列 block 的垂直对齐问题

url - Grails/Groovy:URL参数(最大值,偏移量)空白/字符串时引发NumberFormatException

ruby-on-rails - 将字符串作为 ruby​​ 中方法的条件传递

ruby-on-rails - 如何在 Ruby on Rails 中使用带有邮件程序的实例变量?

ruby-on-rails - 更改路由转换时如何重定向(301)?

ruby - 用另一个字符替换 Ruby 中的字符

grails - 在页面创建时将值插入到 grails createlink 参数中

grails - 在URL映射中包含带有submitToRemote标签的ID