我有一个Home
模型,其中包含主页的内容,例如intro_copy
,about_image
和about_copy
。
在Home
模型上,我还希望能够使用Post
关系在我的has_one
模型中发布3个帖子。基本上只是使用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
表中:
add :post_1_id, references(:posts)
add :post_2_id, references(:posts)
add :post_3_id, references(:posts)
在某处,我显然在这里出错吗?
答案 0 :(得分:5)
如果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
一切都应该与您已经写过的迁移一起使用。