我试图has_many :through在Ecto中建立关系,以获得User模型和Group模型之间的许多关系.
我在网上找到的唯一信息与JoséValim 在这篇文章中的嵌套属性有关(顺便说一下,这是非常好的).
由于这些组已经存在于系统中,我希望能够进行多选输入.这样做我遇到了几个问题.我不相信可以groups直接在变更集中分配关联,因为每次我尝试这样做时都会收到错误.我的下一个想法是手动完成工作(查找,删除和插入GroupMembership记录),但我不确定这是否是正确的路径,并希望首先得到一些建议.
由于代码示例有很多行,所以我在这里提出了一个要点.
如果我更喜欢直接在这个问题中发布,我当然可以这样做.
感谢您的帮助!
我正在重新实现我最初在 Phoenix 的 Rails 中编写的应用程序,其中用户可以使用 PostgreSQL 的 JSONB 记录类型创建自定义字段。例如,我们有以下(简化表示)模式:
客户
客户类型
自定义字段定义
在 Rails 中,ActiveRecord 神奇地在 JSONB 和哈希之间转换,这使我可以使用 JSONB 非常轻松地存储一组无模式的自定义字段。
例如,每个客户端类型都可以定义不同的自定义字段,然后当我向用户显示信息时,我会遍历定义以获取键,然后我使用它从 JSONB 文档中获取数据。
我试图找出一种使用 Ecto 完成此操作的方法,看起来我应该查看嵌入式模式(我在这里看到了一些不错的信息),但是我认为通过查看它我无法定义一个在运行时自定义字段数量,可以吗?
我只是想就此寻求一些建议,因为到目前为止,这是我遇到的唯一一个几乎没有立即解决的真正障碍。
再次感谢,我很感激!
我有一些代码可以从Google Cloud Storage上传和下载文件。下面是一个简短的示例:
import (
"context"
"io"
"cloud.google.com/go/storage"
)
func upload(bucket, keyName, path string, reader io.Reader) error {
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
return err
}
defer client.Close()
obj := client.Bucket(bucket).Object(path)
writer := obj.NewWriter(ctx)
defer writer.Close()
writer.KMSKeyName = keyName
if _, err = io.Copy(writer, reader); err != nil {
return err
}
if err = writer.Close(); err != nil {
return err
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
棘手的部分是,我正在使用Google KMS来管理用于加密文件的密钥(Google的“客户管理的加密密钥”方案)。我的理解是这种加密发生在Google的一端。
我发现使用Go CDK的唯一解决方案是使用Google KMS加密文件,然后上传加密的Blob。没有办法像以前使用Go CDK一样指定加密密钥吗?
谢谢
我有一个大部分完整的Python程序,有一件事我想改变,这可能是也可能是不可能的.
这个程序使用PyQT显示一个GUI,我已经把它固定了,所以我想知道我打开程序时是否可以让Python不打开termianl.
我现在正在使用Windows XP,但它将运行的机器将是Windows 7.我通常使用Linux,因此我对Windows并不十分熟悉.
如果终端必须在那里,这没什么大不了的,但我觉得这在外面是无关紧要的.
谢谢!