テーブル内の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フィールドの使用を変更することはできません。