gpt4 book ai didi

ruby-on-rails - 像普通 ActiveRecord 属性一样访问 JSONB 字段

转载 作者:太空宇宙 更新时间:2023-11-03 16:13:16 25 4
gpt4 key购买 nike

我的模型 User 上有一个名为 properties 的列,它是 jsonb。因为我有用户生成的动态字段的要求。

您将如何像访问普通映射列一样访问属性

例如用户模型有一个名为 first_name 的列,但属性中有一个名为 eye_color 的属性

user = User.find(1)
user.first_name # => "john"
# to access the eye color you would do
user.properties['eye_color'] # => "green"

我想做的是能够调用 map json 属性,这样我就可以通过如下方式设置和获取它

user.eye_color = 'green'

这需要动态完成,因为字段属性可以更改。但是,在用户实例中,我可以看到所有属性的计算结果。

最佳答案

也许可以尝试在您的 User 模型上覆盖 method_missing

def method_missing(method, *args, &block)
clean_method = method.to_s.chomp('=')

if properties.key?(clean_method)
if method.to_s.ends_with?('=')
return properties[clean_method] = args.first
else
return properties[clean_method]
end
end

super
end

这应该允许您直接获取和设置

# set value
user.eye_color = 'green'

# get value
user.eye_color # => returns 'green'

关于ruby-on-rails - 像普通 ActiveRecord 属性一样访问 JSONB 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55500999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com