在同一模式

问题描述:

使用外生V2.2.6多个协会,凤凰1.3在同一模式

我在其中一个用户可以创建职位的场景,然后其他用户可以像帖子。用户通过创建与帖子建立一对多关系,并通过链接表与喜欢建立多对多关系。

设置:

mix phx.gen.json Account User users name:string 
mix phx.gen.json Content Post posts title:string content:text user_id:references:users 
mix phx.gen.json Content Like likes user_id:references:users post_id:references:posts 

架构:

schema "users" do 
    field :name, :string 

    has_many :posts, SocialNetwork.Content.Post, foreign_key: :users_id 
    many_to_many :posts, SocialNetwork.Content.Post, join_through: "likes" 

    timestamps() 
    end 

    schema "posts" do 
    field :content, :string 
    field :title, :string 

    belongs_to :user, SocialNetwork.Accounts.User 
    many_to_many :users, SocialNetwork.Accounts.User, join_through: "likes" 

    timestamps() 
    end 

    schema "likes" do 
    belongs_to :user, SocialNetwork.Accounts.User 
    belongs_to :post, SocialNetwork.Content.Post 

    timestamps() 
    end 

当我运行混合phx.server,我得到这个错误:

== Compilation error in file lib/social_network/account/user.ex == 
** (ArgumentError) field/association :posts is already set on schema 

有没有办法,我可以设置方式将多个关联组合到同一个模式,但通过不同的上下文?

Is there a way that I can set up more than one association to the same schema, but through a different context?

是的,但你必须选择一个不同的名称两会,就像这样:

has_many :posts, SocialNetwork.Content.Post, foreign_key: :users_id 
many_to_many :liked_posts, SocialNetwork.Content.Post, join_through: "likes" 

你不应该需要,因为Post修改任何东西Post已经使用了不同的名称为两个协会。