Manage information-heavy resources
This has been sent in by our friends at Wyndy.com. I'm just going to paste David's message because it says it all.
Hey y'all - we've got a very information heavy app where there are pretty distinct differences between the data we display on index, show, & form views as well as how it's ordered.
We created a concern for our resources to make organizing this a bit easier, would love y'all's thoughts/feedback as to whether this could be a valuable feature! Example gist: https://gist.github.com/davidlormor/d1d7e32a3568f6a9b3540669e7f601dc
We went with a concern because I ran into inheritance issues trying to create a
BaseResource class (issues with Avo's
model_class expectations) and monkey-patching
Avo::BaseResource seemed to cause issues with Rails' autoloading/zeitwork?
class ExampleResource < Avo::BaseResource include ResourceExtensions field :id, as: :id field :name, as: :text index do field :some_field, as: :text field :some_index_field, as: :text, sortable: true end show do field :some_show_field, as: :markdown field :some_field, as: :text end create do field :some_create_field, as: :number end edit do field :some_create_field, as: :number, readonly: true field :some_field field :some_editable_field, as: :text end end
require "active_support/concern" module ResourceExtensions extend ActiveSupport::Concern class_methods do def index(&block) with_options only_on: :index, &block end def show(&block) with_options only_on: :show, &block end def create(&block) with_options only_on: :new, &block end def edit(&block) with_options only_on: :edit, &block end end end