У меня есть Postgres БД, поддерживая мой Rails приложения с классом с колонкой jsonbИспользование Storext (или просто Virtus) с вложенными массив или хэш-объекты
class Product < AR::B
include Storext.model(data: {})
store_attributes :data do
thing_one String
thing_two Boolean # Not actually showing up in the `data` hash
foos FooCollection[Foo]
end
end
class FooCollection < Array
def <<(obj)
if Hash
super(Coupon.new(obj)
else
# Other coersions
end
end
end
class Foo
include Storext.model
attribute :id, Integer
attribute :price, Float
attribute :regular_price, Float
end
Но Foo в терминале возвращающегося undefined method after_initialize for Foo:Class
Есть ли способ гнездиться Storext
модели так же, как с Virtus
? И если есть ли идиоматический способ добавления валидаций на вложенные классы? (Отказавшись Storext и чистое решение Virtus бы также ответить на вопрос)
Может быть, это проблема, A/B, потому что я просто включен Виртус в FooCollection и он также исчез из data
хэша (который я считаю странным, поскольку Storext
является на основе Virtus
и может принимать методы Virtus
).
Для чего Виртус тоже был слишком жестким (или, возможно, я не знал, как использовать Virtus достаточно хорошо) для того, что я пытался сделать. Итак, я просто написал что-то обычай. Приятно видеть, что это не так, как это должно работать, потому что это всегда страх, я не понимаю X или не просто ли это делает? – MCB
Да, также, это усложняет код :) Классно рад слышать, что вы нашли решение. –