2016-04-11 28 views
3

Bir Ecto geçişinde kendi tablolarına başvuran yabancı anahtarların uygulanmasının doğru yolu nedir?Elixir Ecto: Kendine referanslı yabancı bir anahtarı nasıl oluştururum?

örn. Herhangi bir satırın aynı tabloda "üst" satırına başvurabileceği bir tablo oluşturmak istiyorum.

create_if_not_exists table(:perms, prefix: :accts) do 
    add :title, :string, size: 64, null: false 
    add :description, :text 
    add :parent_id, :integer, references(:perms) 
end 

hata mesajı (UndefinedFunctionError) undefined function Ecto.Migration.Reference.fetch/2 (Ecto.Migration.Reference does not implement the Access behaviour) başlar: mix ecto.migrate çalıştırırken

Ama benim Değişiklik listesi bu varken, ben hatalar çok olsun; (. Diğer birçok yolu vardır bir yolu hiyerarşik verileri yapmak için) GenServer sona ermeden önce. (Bu, 1.1.5 ve 2.0.0-beta2 altında gerçekleşir.)

cevap

4

Ve yanıt basit bir hataydı: bir yabancı anahtar sütunu için sütun türünü belirtmeye çalışmak bir hataya neden oluyor. Doğru sözdizimi (eksik :integer atomuna dikkat edin):

create_if_not_exists table(:perms, prefix: :accts) do 
    add :title, :string, size: 64, null: false 
    add :description, :text 
    add :parent_id, references(:perms) 
end 
İlgili konular