在這兩天之後,我完全被困住了。我似乎無法保存包含此內容的任何模型的任何數據(如下所述)或之後添加的任何內容。Rails 5沒有保存數據
我有一個遷移,看起來像這樣:
class CreateScenarios < ActiveRecord::Migration[5.1]
def change
create_table :scenarios do |t|
t.string :title
t.text :description
t.string :scenariotype
t.references :activity, foreign_key: true
t.timestamps
end
end
end
我的架構:
create_table "scenarios", force: :cascade do |t|
t.string "title"
t.text "description"
t.string "scenariotype"
t.bigint "activity_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["activity_id"], name: "index_scenarios_on_activity_id"
end
模式是這樣的:
class Scenario < ApplicationRecord
has_many :pages
belongs_to :activities
end
在我的控制,我有這些PARAMS套裝:
def scenario_params
params.require(:scenario).permit(:title, :description, :scenariotype, :activity_id)
end
新的方法是這樣的:
def new
@scenario = Scenario.new
@activity = Activity.find(params[:activity])
end
而創造的方法是這樣的:
def create
@scenario = Scenario.new(scenario_params)
@activity = Activity.find(@scenario.activity_id)
@scenario.save
redirect_to new_page_path(scenario: @scenario.id)
end
當我嘗試保存記錄,甚至在控制檯,從這個遷移或任何後來的遷移,它都不會保存並回滾,因爲它不是自動增量的。因此,運行這樣的:
scenario=Scenario.new(:activity_id =>1, :title =>"asfdasdf", :scenariotype=>"Teaching", :description=>"asdfadsf")
的結果是這樣的
<Scenario id: nil, title: "asfdasdf", description: "asdfadsf", scenariotype: "Teaching", activity_id: 1, created_at: nil, updated_at: nil>
然後它回滾,因爲它缺少一個ID。
我刪除並重新創建了數據庫。我認爲之前的遷移可能會出現問題,但這兩者都可以正常工作。我希望我錯過了一些令人難以置信的簡單而愚蠢的事情,但我只是沒有看到它。數據庫是Postgres。
在此先感謝任何人可以提供的幫助。
你有@scenario某種形式? – ThorTL67
在運行用於創建場景表的遷移之前,您是否有稱爲活動表的現有Postgresql表? – Zhang
改爲執行'@ scenario.save!',然後粘貼上面的錯誤/警告。 – bitsapien