Dynamiczne akcesoria Active Record Store oparte na formularzu użytkownika?
Active Record Store umożliwia serializację parametrów w pojedynczej komórce.
To znaczy.
class User < ActiveRecord::Base
store :options, accessors: [ :option1, :option2, :another_random_option ]
end
Wszystkie akcesoria są teraz serializowane w kolumnie „opcje” tabeli użytkowników.
u = User.new
u.option2 = 'some option'
u.option2 # => 'some option'
To działa doskonale dla mojej aplikacji, ponieważ muszę tworzyć wiele formularzy na co dzień, gdzie 90% formularza jest takie samo (nazwa użytkownika, hobby, zainteresowania itp.), A następnie 10% to bez schematu (random_option_here, another_random_option_in_another_form) . Nigdy też nie muszę sortować według opcji bez schematu.
Stworzyłem 1 tabelę dla 90% pól formularza, które są zawsze takie same, a następnie mam kolejną tabelę z ostatnimi 10% pól (powodem, dla którego mam inną tabelę, jest to, że jest to relacja belongs_to , więc użytkownik może mieć wiele wierszy w tej tabeli).
<%= form_tag do %>
<%= #render partial form for an object that has non-changing fields %>
...
<%= #render a schema-less partial form based off an ID passed here %>
<% end >
Teraz jedynym problemem jest to, że za każdym razem, gdy tworzę nowe pole w niestandardowym formularzu, muszę dodać ten parametr do akcesorów Active Record Store, w przeciwnym razie pojawia się błąd braku metody. Byłoby miło, gdybym mógł po prostu wejść i utworzyć tyle formularzy widoku, ile chcę w polach bez schematu i nigdy nie aktualizować akcesorów w modelu.
Tak więc moje pytanie brzmi: czy mimo to dynamicznie dodawać wszystkie pola niestandardowe przesłane przez użytkownika do tablicy akcesorów, w ten sposób, jeśli użytkownik przedłoży pola „some_random_option1221”, „another_option_here”, to nie muszę iść do tablicy akcesoriów i dodawać to pole?
Dzięki!