我有一张桌子'用户'各种专栏。其中一列是用户名。我决定通过迁移删除该列。在这样做之后,我尝试通过注册表单创建一个新用户(创建操作)但是我收到了用户名的未定义方法错误,我不知道为什么。错误被@ 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;
答案 0 :(得分:3)
读取堆栈跟踪,它告诉你什么是错的。看看你的User
课程。也许你有类似的东西:
validates_presence_of :username
或
validates :username, presence: true