我一直在努力解決一些問題,讓rails的sqllite表現很好,並決定轉移到mysql。rails mysql的錯誤問題 - 可能的表沒有鏈接
我運行了我的rake db:create和rake db:schema,並假設一切都正常,但是然後mysql show tables顯示一個完整的表格丟失了。
我使用create table details創建了一個遷移,並運行rake db:migrate,現在所有的表都顯示出來。
不幸的是,表格之間的鏈接似乎不起作用。
該應用程序是一個相當簡單的食譜應用程序。 表是
recipes ingredients steps
的成分表是這是不是在數據庫中創建的:創建或DB:架構。
我創建了
class AddIngredientsTable < ActiveRecord::Migration def self.up create_table :ingredients do |t| t.string :ingredient t.float :amount t.string :measure t.string :description end end
在我的食譜模型的成分表我都有的has_many:配料,和我的成分模型belongs_to的:配方
我得到的錯誤是
Mysql::Error: Unknown column 'ingredients.recipe_id' in 'where clause': SELECT `ingredients`.* FROM `ingredients` WHERE (`ingredients`.recipe_id = 1)
,當然,這兩個表中都不存在recipe_id字段的錯誤是正確的。但我沒有控制器這樣的要求無論其內容只是
def show @recipe = Recipe.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @recipe } end end
任何建議,要尋找什麼,以及爲什麼這個問題可能會發生,以及如何解決它?
我不希望手動寫出sql,因爲我的理解是,在這個階段,這不是rails的方式,儘管我熟悉sql,所以可以這樣做。
當然!儘管在這種狀態下,成分只與一種配方相關,但我稍後將做出這種改變,所以我沒有改變has_and_belongs_to_many,而是創建了新的遷移並將recipe_id添加到配料表中。 – pedalpete 2010-09-10 23:34:48