私は、次のスキーマを持つユーザー・プロファイル・モデルを持っている:エクト:外部キー
schema "user_profiles" do
field :birthday, Ecto.Date
field :gender, :string
field :first_name, :string
field :last_name, :string
field :description, :string
field :username, :string
# Associations
belongs_to :user, User
timestamps
end
私も次のスキーマを持つ場所のモデルを持っている:
schema "locations" do
field :name, :string
field :admin_1, :string
field :admin_2, :string
field :country, :string
field :country_abbreviation, :string
field :code, :string
field :latitude, :decimal
field :longitude, :decimal
timestamps
end
場所は都市でありますフランスのパリのように。多くのユーザープロファイルを同じ場所に関連付けることができます。しかし、場所は、ユーザープロファイルが存在することを実際に意識する必要はありません。
ユーザープロファイルスキーマに場所の関連付けを追加します。私は関係が1対1ではないので、ユーザーhas_oneにしたくありません。私は、ロケーション・スキーマ上の関連付けをユーザー・プロファイルにも追加したくありません。
私はEctoのドキュメントを見てきましたが、私はこの関連を表現する方法を失っています。
私は、次のページに相談している:私はおそらく基本的な何かをしないのですが、私はこの質問をする前に、いくつかのことよりも多くを試した https://hexdocs.pm/ecto/Ecto.Schema.html
を。
many_to_manyという関連付けをしたいような音がします。つまり、ユーザーは多数の場所を持つことができ、場所は多くのユーザーに帰属できます。これは、典型的には、例えば、呼び出されるジョインテーブルを介して行われる。 'location_profiles'です。ここでは、より詳細に行くリンクです:[リンク](http://learningwithjb.com/posts/many-to-many-relationship) –
@ハリソンルーカスコメントをいただきありがとうございます。私は実際には、ユーザープロファイルごとに1つの場所を持つだけです。また、1つの場所は多くのユーザープロファイルに属します。データベースでは、ロケーションはユーザープロファイルテーブルの外部キーに過ぎません。 – michaels
ああ、その場合、なぜHas_manyとbelongs_toをしないのですか?例えば。 Profileaはlocationaに属し、Profilebはlocationaに属します。 したがって、location has_many profiles、およびプロファイルは単一の場所に属していますか? –