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!

questionAnswers(2)

yourAnswerToTheQuestion