ActiveRecord::StatementInvalid in UsersController#create(插入不包括新添加的列)
ActiveRecord::StatementInvalid in UsersController#create (Insert does not include newly added column)
我目前正在 ruby 自学 rails 获得学位。我真的是这门语言的新手,想了解更多关于迁移如何工作的信息。
我已通过迁移更新我的现有用户 table 以允许添加一个列 'username' 并包含一些 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 %>
这是迁移后的架构
我一定是漏掉了什么...
如果您查看服务器日志,您应该会找到类似 Unpermitted parameter username
.
的内容
您应该允许白名单参数列表中的 username
字段。我假设您的 users_controller.rb
中有一个 user_params
方法。修改它以允许新创建的 username
字段。
def user_params
params.require(:user).permit(:username, :password, :email)
end
我目前正在 ruby 自学 rails 获得学位。我真的是这门语言的新手,想了解更多关于迁移如何工作的信息。
我已通过迁移更新我的现有用户 table 以允许添加一个列 'username' 并包含一些 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 %>
这是迁移后的架构
我一定是漏掉了什么...
如果您查看服务器日志,您应该会找到类似 Unpermitted parameter username
.
您应该允许白名单参数列表中的 username
字段。我假设您的 users_controller.rb
中有一个 user_params
方法。修改它以允许新创建的 username
字段。
def user_params
params.require(:user).permit(:username, :password, :email)
end