Mam niezmiernie trudny czas na zastanowienie się nad serializacją zagnieżdżonych atrybutów modelu w szynach. Mam RecipeTemplate, który będzie przechowywać już istniejący przepis w jego atrybutu template_data. Przepis ma zagnieżdżone atrybuty na dwóch poziomach.Jak serializować model zagnieżdżony w Railsach?
to na szynach 3.1.0.rc4
class RecipeTemplate < ActiveRecord::Base
serialize :template_data, Recipe
...
end
class Recipe < ActiveRecord::Base
has_many :ingredients
accepts_nested_attributes_for :ingredients
...
end
składników w recepturze ma również zagnieżdżone właściwości (SubIngredients).
Jeżeli ustawić template_data z obiektem tak:
Recipe.includes(:ingredients => [:sub_ingredients]).find(1)
Wezmę TypeError „nie można zrzucić anonimowy class”, która ma sens, ponieważ nie wiedzą, jak serializacji Składniki lub SubIngredients.
Jak można szeregować zagnieżdżonych atrybuty w modelu, dzięki czemu można używać:
serialize :template_data, Recipe
Albo muszę szeregować dane w jakiś inny sposób i wykonywać bezpieczeństwa typu sprawdza się?
Dzięki z góry za wszelką pomoc
Czy jesteś w stanie przechowywać jakiekolwiek dane w zserializowanym polu? Na przykład, czy jesteś w stanie przekazać mu zestaw składników i zdobyć go, aby zaoszczędzić? – thoughtpunch
Dlaczego próbujesz serializować te modele, które są już powiązane przez relacje? Wygląda na to, że próbujesz zapisać powiązane dane w pojedynczej kolumnie w jednej tabeli, gdy wszystkie te dane są już zapisane we własnej tabeli w bazie danych, co należy zrobić w pierwszej kolejności. –