注册时出现未定义的方法错误
Posted
技术标签:
【中文标题】注册时出现未定义的方法错误【英文标题】:Undefined method error on signup 【发布时间】:2014-09-18 13:47:16 【问题描述】:我有一个包含不同列的“用户”表。其中一列是用户名。我决定通过迁移删除该列。这样做之后,我尝试通过注册表单(创建操作)创建一个新用户,但我收到用户名的未定义方法错误,我不知道为什么。在@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: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:in valid?'
activerecord (4.0.5) lib/active_record/validations.rb:70:in
valid?'
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 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:in
block 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: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:in process_action'
actionpack (4.0.5) lib/abstract_controller/callbacks.rb:18:in
block 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: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:in block in process_action'
activesupport (4.0.5) lib/active_support/notifications.rb:159:in
block 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:in
instrument'
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: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'
机架 (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'
机架 (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'
机架 (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'
机架 (1.5.2) lib/rack/lock.rb:17:in call'
actionpack (4.0.5) lib/action_dispatch/middleware/static.rb:64:in
call'
机架 (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'
机架 (1.5.2) lib/rack/content_length.rb:14:in call'
rack (1.5.2) lib/rack/handler/webrick.rb:60:in
service'
【问题讨论】:
发布堆栈跟踪,它会告诉你错误发生在哪里。 在上面的帖子中编辑了堆栈跟踪。 整个堆栈跟踪,而不仅仅是其中的一行。信息就在某处。 【参考方案1】:阅读堆栈跟踪,它会告诉你出了什么问题。看看你的User
班级。也许你有类似的东西:
validates_presence_of :username
或
validates :username, presence: true
【讨论】:
这是我第一次看它。感谢您指出它的用处。我看到它抛出了一堆验证通知,所以我明白为什么检查模型将是下一个合乎逻辑的步骤。低看,模型中隐藏了一些东西。谢谢。 没问题。堆栈跟踪是在某些东西引发异常时生成的。它可能不是第一行,作为异常的“来源”,但它应该在某处。有时候,把信息弄出来有点像游戏。以上是关于注册时出现未定义的方法错误的主要内容,如果未能解决你的问题,请参考以下文章
尝试在 SharePoint 环境中使用 AngularJS DateRangePicker 时出现未定义错误