2016-11-18 59 views
0

我有下面的模式:混淆有關外生關係

schema "countries" do 

    belongs_to :lang, LanguageCode, foreign_key: :code 
    field :text, :string 

    timestamps 

    end 

    schema "languages_code" do 

    has_one :code, Country, foreign_key: :lang 
    field :text, :string 

    timestamps 
    end 

我的問題是,當我要創建應屬於語言代碼過於第三個表:

schema "table3" do 

    belongs_to :coun, CountryCode, foreign_key: :alpha2 
    field :text, :string 

    timestamps 

end 

我怎麼有修改languages_code架構?

回答

1

除非我誤解了,你所要求的是如何在LanguagesCode模型上表示belongs_to關係?

如果是,則取決於是否語言代碼可以有屬於它的一個或多個table3行,你會怎麼做:

schema "languages_code" do 

    has_one :code, Country, foreign_key: :lang 

    #For has_one 
    has_one :code, Table3ModuleName, foreign_key: :alpha2 

    #For has_many 
    has_many :code, Table3ModuleName, foreign_key: :alpha2 

    field :text, :string 

    timestamps 
    end 

你當然會更換,Table3ModuleName用的實際名稱包含table3表架構定義的模塊。

+0

造成混淆的是,我如何設計模式。這個概念有時很奇怪。如何更好地理解ecto? –

+1

@zero_coding真的不是一個ecto問題,如果我正確地理解你,那更像是一個數據庫設計問題。 我很樂意爲您提供有關設計數據庫的更多幫助,但我需要更多地瞭解該域以及您試圖實現的目標。也許編輯您的原始文章包括 –