2017-09-22 50 views
0

我試圖向現有模型添加新列,但是當我嘗試更新值時,沒有任何數據寫入數據庫。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 

有沒有設定必要的參數和模型中我沒有驗證。

我不明白爲什麼我添加的任何新字段沒有得到更新。在日誌中,我可以看到正確傳遞的參數,但提交會更新新的新字段。

+1

您是否已更新'company_params'以包含新字段? –

+0

即時通訊新的紅寶石,所以原諒我,如果這是一個愚蠢的問題,但我可以在哪裏更新company_params添加這個新領域?我已經在enitre代碼庫上做了一個grep,並且它引用的唯一位置在控制器中,並且它沒有設置在任何地方。我正在尋找強烈的參數的任何定義,但無法找到任何東西 – briansexton

+0

當然這是一個愚蠢的問題!找到了。不知道我昨晚在搜索時是在做什麼,但是它在另一個文件/controllers/concerns/Company.rb中。多數民衆贊成在工作,現在非常感謝你 – briansexton

回答

0

我試着去新列添加到現有的模型,但是當我嘗試 更新

也許你只需要運行遷移:rake db:migrate。僅添加新列是不夠的。您必須運行遷移。

此外,檢查您的數據庫是否有這些列。運行rails dbconsole(或使用其他方式登錄到您的數據庫)。然後use your_db_name;desc your_table;

列應該存在。

+0

我已經運行數據庫:遷移和應用程序可以讀取列中的數據,它只是不能寫入它 – briansexton