假设
schema "infrastructure_instances" do
belongs_to :provider, MyApp.Infrastructure.Provider
belongs_to :user, MyApp.Web.User
end
和
schema "infrastructure_providers" do
belongs_to :user, MyApp.Web.User
has_many :instances, MyApp.Infrastructure.Instance
end
...和
schema "account_users" do
has_many :providers, MyApp.Infrastructure.Provider
has_many :instances, MyApp.Infrastructure.Instance
end
如何为实例向提供者和用户构建关联
这很有效,但肯定会有更好的方法,
def create_instance(attrs \\ %{},user) do
user
|> build_assoc(:instances,provider_id: provider_id)
谢谢
答案 0 :(得分:0)
build_assoc(user, :instances, provider: provider)
(希望它以这种方式工作)或
build_assoc(user, :instances, provider_id: provider_id)
对我来说似乎很好。所以我认为你的方式并不差。
或者如果你需要创建一个变更集 - >
%Instance{}
|> Changeset.change()
|> Changeset.put_assoc(:user, user_struct_or_changeset)
|> Changeset.put_assoc(:provider, provider_struct_or_changeset)