Ну это не мой код, а код rails если так можно выразиться. Ну и возможно я что-то не так делаю. из идей в лоб - есть мысль сделать
class DrySerializer
def self.[](struct_class)
...
end
def self.load(data)
struct_class.new(data)
end
end
class MyModel < AR
serialize :data, DrySerialyser[DryStructChild]
...
end