class ActiveAdmin::Generators::ResourceGenerator

def assignable_attributes

def assignable_attributes
  @assignable_attributes ||= attributes - primary_key - %w(created_at updated_at)
end

def attributes

def attributes
  @attributes ||= class_name.constantize.new.attributes.keys
end

def column(name)

def column(name)
  "column :#{name.gsub(/_id$/, '')}"
end

def columns

def columns
  (attributes - primary_key).map { |a| column(a) }.join("\n    ")
end

def filter(name)

def filter(name)
  "filter :#{name.gsub(/_id$/, '')}"
end

def filters

def filters
  attributes.map { |a| filter(a) }.join("\n  ")
end

def form_input(name)

def form_input(name)
  "f.input :#{name.gsub(/_id$/, '')}"
end

def form_inputs

def form_inputs
  assignable_attributes.map { |a| form_input(a) }.join("\n      ")
end

def generate_config_file

def generate_config_file
  template "resource.rb.erb", "app/admin/#{file_path.tr('/', '_').pluralize}.rb"
end

def permit_params

def permit_params
  assignable_attributes.map { |a| a.to_sym.inspect }.join(", ")
end

def primary_key

def primary_key
  @primary_key ||= [class_name.constantize.primary_key].flatten
end

def row(name)

def row(name)
  "row :#{name.gsub(/_id$/, '')}"
end

def rows

def rows
  attributes.map { |a| row(a) }.join("\n      ")
end