Ruby on rails 如何修复jsonb字段中的键
我有一个带有一个jsonb字段的表。我希望该字段只有三个键,比如表模式是 名称:string dob:日期 个人资料:jsonb 我希望个人资料只有三把钥匙 个人资料:{ 您的姓名:'', 父亲的名字:'', 随机密钥:“” }Ruby on rails 如何修复jsonb字段中的键,ruby-on-rails,postgresql,jsonb,Ruby On Rails,Postgresql,Jsonb,我有一个带有一个jsonb字段的表。我希望该字段只有三个键,比如表模式是 名称:string dob:日期 个人资料:jsonb 我希望个人资料只有三把钥匙 个人资料:{ 您的姓名:'', 父亲的名字:'', 随机密钥:“” } 如果我试图保存其他密钥,它将显示一个错误。我正在使用rails,任何实现这一点的方法都将处理两个特定键和任意第三个键。如果需要3个特定键,只需将第三个键添加到数组和(self…)。count==3而不是2 关于yourmodel.rb 保存前:检查个人数据 keys_t
如果我试图保存其他密钥,它将显示一个错误。我正在使用rails,任何实现这一点的方法都将处理两个特定键和任意第三个键。如果需要3个特定键,只需将第三个键添加到数组和(self…)。count==3而不是2 关于yourmodel.rb 保存前:检查个人数据
keys_to_always_match = [ :mothers_name, :father_name ]
def check_personal_data
(self.personal_data.keys & keys_to_always_match).count == 2 && self.personal_data.count == 3
end
您可能还希望为迁移添加一个默认值:
t.jsonb :personal_data, default: { mothers_name: '', father_name: '', random_key: '' }
钥匙匹配的优雅解决方案来自:
好的,这是一个选项,根据我的情况,我还需要检查用户是否没有试图保存上面没有提到的任何其他密钥。我将用它更改为一个示例,但根据上面的信息,您应该能够推断出一种方法,with.count==3&&key1&&key2&&key3@gurpreetsingh我把它改成了更好的解决方案