module ConfigurableEngine module ConfigurablesControllerMethods def show @keys = Configurable.keys render 'configurable_engine/configurables/show' end def update failures = Configurable .keys.map do |key| Configurable.find_by_name(key) || Configurable.create {|c| c.name = key} end.reject do |configurable| configurable.value = params[configurable.name] configurable.save end if failures.empty? redirect_to(action: :show, :notice => "Changes successfully updated") else flash[:error] = failures.flat_map(&:errors).flat_map(&:full_messages).join(',') redirect_to(action: :show) end end end end