Ruby:新的数据库列未保存但在迁移后正在读取

时间:2017-09-22 22:42:50

标签: ruby-on-rails ruby

我正在尝试向现有模型添加新列,但是当我尝试更新这些值时,没有任何内容写入数据库。

我在视图中有以下输入

<% if is_auth%>
          <%= f.input :is_startup,  as: :radio_buttons, label: 'Startup' %>   
          <%= f.input :is_hq,  as: :radio_buttons, label: 'Is the Office Headquarters' %>
<% end %>

我已经通过迁移将is_hq字段添加到数据库中。问题是我无法从视图中更新该字段。 is_startup参数更新但新的is_hq参数不会更新。如果我在pgadmin中运行sql来设置一个值,它会正确读取它但我无法改变它。

在我的控制器中,我有以下更新代码

def update
    @company = Company.find(params[:id])
    if @company.update_attributes(company_params)
      flash[:success] = "Data updated"
      redirect_back(fallback_location: edit_page)
    else
      flash[:error] = @company.errors.full_messages
      render 'edit'
    end
  end

没有设置所需的参数,在模型中我没有验证。

我无法理解为什么我添加的任何新字段都没有更新。在日志中,我可以看到正确传递的参数,但是commit doenst会更新新的新字段。

1 个答案:

答案 0 :(得分:0)

  

我正在尝试向现有模型添加新列,但是当我尝试时   更新

您可能只需要运行迁移:rake db:migrate。仅仅添加新列还不够。你必须运行迁移。

另外,检查您的数据库是否包含这些列。运行rails dbconsole(或使用其他方式登录数据库)。然后use your_db_name;desc your_table;

列应该存在。