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

时间:2016-09-02 15:37:42

标签: mysql ruby ruby-on-rails-3 activerecord

我现在在学位后教我自己的红宝石。我对这门语言很陌生,想要了解有关迁移如何运作的更多信息。

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 %>
&#13;
&#13;
&#13;

这是迁移后的架构

Schema After rake db:migrate

我一定错过了什么......

1 个答案:

答案 0 :(得分:3)

如果查看服务器日志,您应该找到Unpermitted parameter username

之类的内容

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

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