2016-04-09 21 views
0

Şu anda bir tamsayı olan alan (tamsayı) "rank" ı içeren bir "Sıralama" modelim var. Diğer taraftan "Gemi" modelinin "usable_by" alanı vardır (tamsayı). Kazanmak istediğim, bir Rank getirdiğimde, "usable_by" alanının Rank modelindeki "rank" alanıyla eşleştiği tüm Gemi modellerinin bir listesini içerir. Bunun bir sorgu tarafından yapılabildiğini ve verileri manuel olarak doldurduğunu biliyorum, ama bunu daha kolay hale getirmek için kullanabileceğim Ecto/Phoenix'e yerleşik bir şey var mı?Özel alanlarda bir çok ilişki için ek

Tahmin ettiğim ideal durum, has_many (gerçekten ters ilişkiyi umurumda değil): referanslar ya da foregin_key gibi bir şey kullanmakta olduğunu sanıyorum, ama işe yaramış gibi görünmüyor. Bu ben şu anda kullanıyorum çizgidir:

Sıra modeli

schema "ranks" do 
    field :name, :string 
    field :rank, :integer 
    timestamps 

    has_many :ships, Playground.Ship #Can I use :foregin_key and :references here? 
end 

cevap

0

Şimdiye kadar cevap bulundu, ancak bu konuda başkasının Tökezlemeler yanıt sonrası ise şudur oldum sanırım:

has_many :ships, Playground.Ship, foreign_key: :usable_by

Bu şekilde ilişkili modelinizde özel alan adı kullanabilirsiniz.

Taşıma işleminizdeki referansları kullanmalısınız (veritabanını gerçekten güncelleyeceğiniz yer). Burada Playground.Ship, belirli bir modele başvuru gibi davranır, :created_by ilişki ilişkisinde kullanılacak addır.

İlgili konular