gpt4 book ai didi

mysql - ActiveRecord::StatementInvalid in UsersController#create (Insert 不包括新添加的列)

转载 作者:太空宇宙 更新时间:2023-11-03 18:08:27 24 4
gpt4 key购买 nike

在获得学位后,我目前正在自学 ruby​​ on rails。我真的是这门语言的新手,想更多地了解迁移的工作原理。

Error Of problem

我已经通过迁移更新了我现有的用户表,以允许添加一个“用户名”列,并包含一些 HTML/Ruby 以允许用户在该字段中输入。我无法理解 Rails 如何生成 INSERT SQL 语句或在迁移时更新它们。

下面是我的 HTML 代码

<%= form_for(user) do |f| %>
<% if user.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>

<ul>
<% user.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>

<div class="field">
<%= f.label :username %>
<%= f.text_field :username %>
</div>


<div class="field">
<%= f.label :password %>
<%= f.text_field :password %>
</div>

<div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>

<div class="actions">
<%= f.submit %>
</div>
<% end %>

这是迁移后的模式

Schema After rake db:migrate

我一定是漏掉了什么...

最佳答案

如果您查看服务器日志,您应该会发现类似Unpermitted parameter username 的内容。

您应该在白名单参数列表中允许 username 字段。我假设您的 users_controller.rb 中有一个 user_params 方法。修改它以允许新创建的 username 字段。

def user_params
params.require(:user).permit(:username, :password, :email)
end

关于mysql - ActiveRecord::StatementInvalid in UsersController#create (Insert 不包括新添加的列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39296132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com