Rails 4.2+: Mapping PostgreSQL JSONB nested values to form fields -


i have users table settings field of type jsonb (using postgresql 9.5).

i'm trying create form on settings page update user.settings["notifications"][...] values.

class user < activerecord::base end  user = user.create(settings: { notifications: { post_created: true } })  user.settings["notifications"]["post_created"] # => true 

to map nested jsonb values form, however, have this:

# views/form.html.erb <input type="check" name="user[settings][notifications][post_created]" checked="<%= current_user.settings['notifications']['post_created']" %>  class settingscontroller   def update     current_user.settings["notifications"]["post_created"] = params["user"]["settings"]["notifications"]["post_created"]      current_user.save   end end 

is there anyway utilize power of rails form builders such can do:

# not work, undefined attribute settings['notifications']['post_created']... <%= form_for current_user, url: settings_path, method: "put" |f| %>   <%= f.check_box "settings['notifications']['post_created']" %> <% end %> 

i understand rails trying map attribute current_user object, , there isn't "attribute" named settings['notifications']['post_created'].

but how 1 go mapping nested jsonb values form field crud activity?

a workable (but not feasible) approach created virtual attributes every single nested value want work with:

class user   def settings_notifications_post_created     settings["notifications"]["post_created"]   end    def settings_notifications_post_created=(value)     settings["notifications"]["post_created"] = value   end end  # view... <%= f.check_box :settings_notifications_post_created %> 

but loses benefit of conventional system since i'm manually typing out every attribute. may write raw html fields , getter/setter methods myself...googling , stack overflow haven't been helpful far, seems there aren't many experience doing kind of stuff yet...


Comments

Popular posts from this blog

wordpress - (T_ENDFOREACH) php error -

Export Excel workseet into txt file using vba - (text and numbers with formulas) -

Using django-mptt to get only the categories that have items -