我有一個在users
和widgets
之間建立了多對多關係的rails應用程序。 「用戶」已通過devise
寶石生成和管理。當我點擊創建新的窗口小部件,作爲用戶登錄時,我得到的錯誤:在Rails應用程序中找不到表格錯誤
ActiveRecord::StatementInvalid in WidgetsController#create
Could not find table 'users_widgets'
我的遷移文件如下:
class CreateWidgets < ActiveRecord::Migration
def change
create_table :widgets do |t|
t.string :name
t.timestamps null: false
end
end
create_table :users_widgets, id: false do |t|
t.belongs_to :user, index: true
t.belongs_to :widget, index: true
end
end
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
#other devise stuff...
end
end
和我widget_controller
:
def create
@user = current_user
@widget = @user.widgets.build(widget_params)
respond_to do |format|
if @widget.save
format.html { redirect_to @widget, notice: 'Widget was successfully created.' }
format.json { render :show, status: :created, location: @widget }
else
format.html { render :new }
format.json { render json: @widget.errors, status: :unprocessable_entity }
end
end
end
我做了什麼錯誤/是什麼導致這個錯誤?我會認爲createWidgets類中的定義足夠了嗎?
更新:
我HVE改變了我的create_widgets遷移文件到這一點:
class CreateWidgets < ActiveRecord::Migration
def change
create_table :widgets do |t|
t.string :name
t.timestamps null: false
end
create_table :users_widgets, id: false do |t|
t.belongs_to :user, index: true
t.belongs_to :widget, index: true
end
end
end
並運行:
$rake db:reset
$rake db:migrate
,但我仍然得到同樣的錯誤...
你實際運行您的遷移? – jvillian
@jvillian是的,但是,請參閱我對其他問題的評論,因爲我正在努力重新遷移表格...... –
要重新開始,請執行rake db:reset **或** rake db:drop;耙db:創建; rake db:migrate;耙數據庫:測試:準備 – jvillian