gpt4 book ai didi

phoenix-framework - Phoenix 的 Ecto has_one 无所属

转载 作者:行者123 更新时间:2023-12-04 18:59:07 25 4
gpt4 key购买 nike

我有一个 Home包含主页内容的模型,例如 intro_copy , about_imageabout_copy .

关于 Home模型,我还希望能够展示来自我的 Post 的 3 个帖子模型使用 has_one关系。基本上只是使用 id 链接它们。

我的 Home架构如下所示:

schema "home" do
field :intro_copy, :string
field :about_copy, :string
field :about_image, Image.Type

has_one :post_1, Post
has_one :post_2, Post
has_one :post_3, Post

timestamps()
end

我的 changeset函数看起来像这样:
def changeset(struct, params \\ %{}) do
struct
|> cast_assoc(params, [:post_1, :post_2, :post_3])
|> cast(params, @required_fields, @optional_fields)
end

此外,在我的迁移中,我将以下几行添加到 :home table :
add :post_1_id, references(:posts)
add :post_2_id, references(:posts)
add :post_3_id, references(:posts)

有什么地方我显然出错了吗?

最佳答案

如果home表包含对 posts 的引用,然后 Home应该belongs_to Post . has_one是相反的——如果 posts,你会在这里使用它包含一个引用 home 的字段.

如果你改变:

has_one :post_1, Post
has_one :post_2, Post
has_one :post_3, Post


belongs_to :post_1, Post
belongs_to :post_2, Post
belongs_to :post_3, Post

一切都应该适用于您已经编写的迁移。

关于phoenix-framework - Phoenix 的 Ecto has_one 无所属,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42539391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com