Skip to content

🆎 Automatically deserialize administrate fields on form submit.

License

Notifications You must be signed in to change notification settings

XPBytes/administrate-serialized_fields

Repository files navigation

Administrate::SerializedFields

Build Status: master Gem Version MIT license

Automatically deserialize administrate fields on form submit.

Installation

Add this line to your application's Gemfile:

gem 'administrate-serialized_fields'

And then execute:

$ bundle

Or install it yourself as:

$ gem install administrate-serialized_fields

Usage

In order to use this, include 'Administrate::SerializedFields' in your base admin ApplicationController.

require 'administrate/serialized_fields'

class ApplicationController < Administrate::ApplicationController
  include Administrate::SerializedFields
end

class NotificationController < ApplicationController
  deserialize_json_fields :options, :messages, :settings
end

The deserialize_json_fields by default looks for Oj and falls back to JSON. Use load: or deserialize_fields to apply custom behaviour or a different deserializer.

You must ensure there is a method read_param that takes 2 arguments (key and value), as opposed to the 0.11.0 administrate one param (value). Alternatively, use the administrate-base_controller gem and get this addition for free.

class Application < Administrate::ApplicationController
  protected
  
  def resource_params
    permitted = params.require(resource_class.model_name.param_key)
                      .permit(dashboard.permitted_attributes)
                      .to_h

    permitted.each_with_object(permitted) do |(k, v), result|
      result[k] = read_param(k, v)
    end
  end
  
  def read_param(_, data)
    if data.is_a?(ActionController::Parameters) && data[:type]
      return read_param_value(data)
    end

    data
  end
end

Related

Concerns

Fields

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at XPBytes/administrate-serialized_fields.

About

🆎 Automatically deserialize administrate fields on form submit.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published