2016-04-09 25 views
0

現在、フィールド(整数)「ランク」を含む「ランク」モデルが整数です。一方、「船」モデルは「使用可能」フィールド(整数)を有する。私が達成したいのは、私がランクを返すとき、ランクモデルの「ランク」フィールドに「available_by」フィールドが一致するすべてのShipモデルのリストも含まれているということです。私はこれがクエリによって実行可能であることを知っていて、手動でデータを入力すると思いますが、Ecto/Phoenixに組み込まれているものは何ですか?これを簡単にするために使用できますか?Ectoカスタムフィールドの1対多の関連付け

私が期待している理想的な状況は、参照やforegin_keyのようなものでhas_many(実際には逆の関連付けは気にしません)を使用していると思いますが、動作させることができません。

ランクモデル

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

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

答えて

0

私はあなたが今では、あなたの答えを見つけたと思いますが、この記事に誰かつまずく場合は、答えはこうです:

これは私が現在使用しているラインであります

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

このようにして、関連するモデルでカスタムフィールド名を使用できます。

マイグレーション(実際にデータベースを更新する)で参照を使用する必要があります。ここで、Playground.Shipは特定のモデルへの参照のように機能し、:created_byは関係関連付けで使用される名前です。

関連する問題