gos*_*eti 5 elixir ecto elixir-framework phoenix-framework
我有一个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
Run Code Online (Sandbox Code Playgroud)
我的changeset功能看起来像这样:
def changeset(struct, params \\ %{}) do
struct
|> cast_assoc(params, [:post_1, :post_2, :post_3])
|> cast(params, @required_fields, @optional_fields)
end
Run Code Online (Sandbox Code Playgroud)
此外,在我的迁移中,我将以下行添加到:home表中:
add :post_1_id, references(:posts)
add :post_2_id, references(:posts)
add :post_3_id, references(:posts)
Run Code Online (Sandbox Code Playgroud)
有什么地方我明显错了吗?
如果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
Run Code Online (Sandbox Code Playgroud)
至
belongs_to :post_1, Post
belongs_to :post_2, Post
belongs_to :post_3, Post
Run Code Online (Sandbox Code Playgroud)
一切都应该适用于您已经编写的迁移.
| 归档时间: |
|
| 查看次数: |
1853 次 |
| 最近记录: |