创建嵌套关联

拉斐尔·拉法特帕纳

请考虑以下架构:

schema "businesses" do
  ...
  has_many :contacts, Contact
  has_many :conversations, Conversation
  ...
end
schema "contacts" do
  ...
  belongs_to :business, Business
  has_one :conversation, Conversation
  ...
end
schema "conversations" do
  ...
  belongs_to :business, Business
  belongs_to :contact, Contact
  has_many :messages, Message
  ...
end
schema "messages" do
  belongs_to :conversation, Conversation
  belongs_to :contact, Contact
end

这个答案说明了如何将两个关联放在一个结构上。

我遵循了这种模式,并且效果很好。

def create_conversation(%{business: business, contact: contact, message: message} = attrs) do
  business
  |> Ecto.build_assoc(:conversations)
  |> Ecto.Changeset.change()
  |> Ecto.Changeset.put_assoc(:contact, contact)
  |> Repo.insert()
end

但是,我想知道还要创建一个message(这是conversation上面新创建的关联的惯用方式是什么conversation在一个Repo.insert()电话中执行此操作是否有意义在Elixir / Ecto中有经验的人将如何解决这个问题?

拉斐尔·拉法特帕纳

哇,这可行!

def create_conversation(%{business: business, contact: contact, message: message} = attrs) do
  business
  |> Ecto.build_assoc(:conversations)
  |> Ecto.Changeset.change()
  |> Ecto.Changeset.put_assoc(:contact, contact)
  |> Ecto.Changeset.put_assoc(:messages, [%Message{body: message.body}])
  |> Repo.insert()
end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建嵌套的关联记录Ruby on Rails

来自分类Dev

通过Rails中的给定嵌套属性创建关联

来自分类Dev

为具有嵌套关联的深度嵌套结构创建Ecto变更集

来自分类Dev

与自身嵌套关联的类

来自分类Dev

嵌套关联不保存

来自分类Dev

嵌套资源-关联失败

来自分类Dev

嵌套关联订购

来自分类Dev

在保存父模型和嵌套关联之后,在父模型上创建后,Rails运行

来自分类Dev

绝对坚持尝试通过has_many通过rails形式创建嵌套关联

来自分类Dev

如何使用嵌套资源在Rails 4中创建与用户关联的对象?

来自分类Dev

在“has_many 到”多对多关系中创建多个新关联对象的嵌套表单

来自分类Dev

Rails 如何查询嵌套关联返回所有嵌套关联

来自分类Dev

Rails嵌套的关联。在render:json

来自分类Dev

Rails JSON的多个嵌套关联

来自分类Dev

Rails 4,嵌套关联搜索

来自分类Dev

迭代嵌套关联数组

来自分类Dev

Rails:搜索非常嵌套的关联

来自分类Dev

如何创建“通过”关联?

来自分类Dev

创建关联对象?

来自分类Dev

Sequelize 创建关联

来自分类Dev

如何创建关联表?

来自分类Dev

Rails 4-如果不使用'has_one'关联创建新的嵌套模型,则无法保存模型

来自分类Dev

具有嵌套属性创建的模型更改了before_validation和before_save之间的关联类型属性

来自分类Dev

基于更深关联的计数过滤嵌套关联的结果

来自分类Dev

rails选择不同的嵌套关联并获取这些关联

来自分类Dev

工厂女孩:创建关联记录

来自分类Dev

尝试创建关联数组?

来自分类Dev

使用Rails创建关联的模型

来自分类Dev

创建关联时出现错误