2014-01-14 55 views
3

如何在Sequel遷移中創建hstore列?如何在續集遷移中創建hstore列?

Sequel.migration do 
    change do 
    add_column :logs, :geo, HStore 
    end 
end 

失敗。我需要加載擴展嗎?

+0

我懷疑你的答案就在於這個文檔,http://sequel.jeremyevans.net/rdoc/files/doc/postgresql_rdoc.html英寸具體來說,看標題** PostgreSQL特定的數據庫類型支持** –

+1

感謝您指向我正確的文檔頁面,但我仍然無法運行遷移。我嘗試了不同的名稱,例如:hstore,:h_store,:pg_hstore,HStore等。我已經加載了:pg_store數據庫擴展,甚至將sequel_pg和sequel-hstore gems添加到Gemfile中。試過用json數據類型,並行得通,但我更喜歡hstore。 – MegaTux

+0

也許這是寶石中的一個錯誤。你有報告給維護者嗎? –

回答

0

隨着Author's gem answered me,數據庫需要這種額外的擴展使用它之前:

CREATE EXTENSION hstore 
+1

順便說一句,正確的行是add_column:logs,:geo,:hstore#或'hstore' – MegaTux

1

的文檔中我找不到這個所以我要求在IRC上。

jeremyevans:method_missing的使用,允許你使用任何自定義數據庫類型

所以你可以只要擴展啓用指定jsonjsonb

Sequel.migration do 
    change do 
    create_table :foo do 
     primary_key :id 
     jsonb :bar 
    end 
    end 
end 

啓用擴展名:

Sequel.extension :pg_json 

並創建一個新的紀錄:

foo = Foo.new bar: Sequel.pg_jsonb({ 'baz' => 'qux' })