2010-01-21 92 views
1

我在爲我的Hobo項目運行db:setup時出現錯誤,它帶有乾淨的數據庫。我有兩個模型,A和B,其中B通過單表繼承來擴展A.創建一切正常。但是,如果我從新的數據庫開始,耙機將失敗,並顯示以下錯誤:Rails和Hobo單表繼承問題

$ rake db:setup 
... 
rake aborted! 
Table as does not exist 

以下是我重現此問題的步驟。首先,創建流浪漢應用:

$ hobo testproject 

創建的第一款車型,A

$ ruby script/generate hobo_model_resource a name:string type:string 

設置的database.yml,生成並執行遷移:

$ ruby script/generate hobo_migration 

創建第二個模型,B

$ruby script/generate hobo_model_resource b 

編輯B模型擴展A

class B < A 

    # --- Permissions --- # 
    def create_permitted? 
    acting_user.administrator? 
    end 

    def update_permitted? 
    acting_user.administrator? 
    end 

    def destroy_permitted? 
    acting_user.administrator? 
    end 

    def view_permitted?(field) 
    true 
    end 
end 

生成並運行遷移:

$ ruby script/generate hobo_migration 

瞧。一切正常。現在,如果我刪除所有表和運行db:setup,它失敗:

$ rake db:setup 
... 
rake aborted! 
Table as does not exist 

Ruby on Rails Single Table Inheritance (STI) and unit test problem (with PostgreSQL)繼建議,我試圖消除test/fixtures/as.ymltest/fixtures/bs.yml,但這並沒有幫助。

流浪漢0.9.103
軌2.3.5
耙0.8.7
的JRuby 1.4.0RC1

有什麼建議?

回答

1

看起來像它在流浪漢中的錯誤:

http://groups.google.com/group/hobousers/browse_thread/thread/2160e78762791946

根據馬特·瓊斯:

The trace has the automatic scope code trying to see if inherited_without_inheritable_attributes is a column, which hits the
DB and dies.

他建議增加:

return unless table_exists? 

在很擱g的column方法(hobofields/lib/hobo_fields/model_extensions.rb的第211行)。

+0

請注意,這是修正於2010年1月24日,並在最新的候選版本。 – organicveggie 2010-02-11 16:34:58

0

我遵循了你所有的步驟,並且一切正常。你有沒有試過rake db:schema:load

hobo 0.9.104 
rails 2.3.5 
rake 0.8.6 
ruby 1.8.6 
+0

是。同樣的行爲。不知道爲什麼它爲你工作... :( – organicveggie 2010-01-23 15:35:29