我有一个管理表中的 json 字段的 rails 2 应用程序。它需要:
- 读取 json
- 将 json 转换为模型属性和表单字段
- 将对表单字段的编辑保存到 json 字段中
- 为某些 json 值添加验证
- 适用于多种机型
目前,我有一个库文件,它手动添加方法以提取并保存到 json 中,如下所示:
module Configuration
def configuration_json
configuration? ? JSON.parse(self.configuration) : {}
end
def some_json_value
if !self.configuration.nil? && configuration_json["parentKey"]
configuration_json["parentKey"]["someJsonValue"]
end
end
def some_json_value=(val)
new_config = configuration_json.deep_merge({
"FeatureConfiguration" => { "someJsonValue" => val }
})
self.configuration = new_config.to_json
end
def some_json_value_validation
# ...
end
end
在模型中,我包括了这个
class SomeModel < ActiveRecord::Base
include Configuration
validate :some_json_value_validation
# ...
end
有没有更好/更干燥的方法?目前,当 json 结构发生变化时,它真的很笨重,因为在 rails 应用程序中有很多步骤需要修改。
我无法更改 json 字段的使用,因为它用于配置另一个应用程序,这是 rails 应用程序支持的主要应用程序。