23 changed files with 1055 additions and 9 deletions
			
			
		@ -0,0 +1,28 @@
					 | 
				
			||||
ActiveAdmin.register AdminUser do | 
				
			||||
  permit_params :email, :password, :password_confirmation | 
				
			||||
 | 
				
			||||
  index do | 
				
			||||
    selectable_column | 
				
			||||
    id_column | 
				
			||||
    column :email | 
				
			||||
    column :current_sign_in_at | 
				
			||||
    column :sign_in_count | 
				
			||||
    column :created_at | 
				
			||||
    actions | 
				
			||||
  end | 
				
			||||
 | 
				
			||||
  filter :email | 
				
			||||
  filter :current_sign_in_at | 
				
			||||
  filter :sign_in_count | 
				
			||||
  filter :created_at | 
				
			||||
 | 
				
			||||
  form do |f| | 
				
			||||
    f.inputs do | 
				
			||||
      f.input :email | 
				
			||||
      f.input :password | 
				
			||||
      f.input :password_confirmation | 
				
			||||
    end | 
				
			||||
    f.actions | 
				
			||||
  end | 
				
			||||
 | 
				
			||||
end | 
				
			||||
@ -0,0 +1,32 @@
					 | 
				
			||||
ActiveAdmin.register_page "Dashboard" do | 
				
			||||
  menu priority: 1, label: proc { I18n.t("active_admin.dashboard") } | 
				
			||||
 | 
				
			||||
  content title: proc { I18n.t("active_admin.dashboard") } do | 
				
			||||
    div class: "blank_slate_container", id: "dashboard_default_message" do | 
				
			||||
      span class: "blank_slate" do | 
				
			||||
        span I18n.t("active_admin.dashboard_welcome.welcome") | 
				
			||||
        small I18n.t("active_admin.dashboard_welcome.call_to_action") | 
				
			||||
      end | 
				
			||||
    end | 
				
			||||
 | 
				
			||||
    # Here is an example of a simple dashboard with columns and panels. | 
				
			||||
    # | 
				
			||||
    # columns do | 
				
			||||
    #   column do | 
				
			||||
    #     panel "Recent Posts" do | 
				
			||||
    #       ul do | 
				
			||||
    #         Post.recent(5).map do |post| | 
				
			||||
    #           li link_to(post.title, admin_post_path(post)) | 
				
			||||
    #         end | 
				
			||||
    #       end | 
				
			||||
    #     end | 
				
			||||
    #   end | 
				
			||||
 | 
				
			||||
    #   column do | 
				
			||||
    #     panel "Info" do | 
				
			||||
    #       para "Welcome to ActiveAdmin." | 
				
			||||
    #     end | 
				
			||||
    #   end | 
				
			||||
    # end | 
				
			||||
  end # content | 
				
			||||
end | 
				
			||||
@ -0,0 +1,18 @@
					 | 
				
			||||
ActiveAdmin.register IncomeRange do | 
				
			||||
 | 
				
			||||
  # See permitted parameters documentation: | 
				
			||||
  # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters | 
				
			||||
  # | 
				
			||||
  # Uncomment all parameters which should be permitted for assignment | 
				
			||||
  # | 
				
			||||
  # permit_params :economic_status, :soft_min, :soft_max, :hard_min, :hard_max | 
				
			||||
  # | 
				
			||||
  # or | 
				
			||||
  # | 
				
			||||
  # permit_params do | 
				
			||||
  #   permitted = [:economic_status, :soft_min, :soft_max, :hard_min, :hard_max] | 
				
			||||
  #   permitted << :other if params[:action] == 'create' && current_user.admin? | 
				
			||||
  #   permitted | 
				
			||||
  # end | 
				
			||||
   | 
				
			||||
end | 
				
			||||
@ -0,0 +1,5 @@
					 | 
				
			||||
// Load Active Admin's styles into Webpacker,
 | 
				
			||||
// see `active_admin.scss` for customization.
 | 
				
			||||
import "../stylesheets/active_admin"; | 
				
			||||
 | 
				
			||||
import "@activeadmin/activeadmin"; | 
				
			||||
@ -0,0 +1,2 @@
					 | 
				
			||||
/* Active Admin Print Stylesheet */ | 
				
			||||
@import "~@activeadmin/activeadmin/src/scss/print"; | 
				
			||||
@ -0,0 +1,17 @@
					 | 
				
			||||
// Sass variable overrides must be declared before loading up Active Admin's styles. | 
				
			||||
// | 
				
			||||
// To view the variables that Active Admin provides, take a look at | 
				
			||||
// `app/assets/stylesheets/active_admin/mixins/_variables.scss` in the | 
				
			||||
// Active Admin source. | 
				
			||||
// | 
				
			||||
// For example, to change the sidebar width: | 
				
			||||
// $sidebar-width: 242px; | 
				
			||||
 | 
				
			||||
// Active Admin's got SASS! | 
				
			||||
@import "~@activeadmin/activeadmin/src/scss/mixins"; | 
				
			||||
@import "~@activeadmin/activeadmin/src/scss/base"; | 
				
			||||
 | 
				
			||||
// Overriding any non-variable Sass must be done after the fact. | 
				
			||||
// For example, to change the default status-tag color: | 
				
			||||
// | 
				
			||||
//   .status_tag { background: #6090DB; } | 
				
			||||
@ -0,0 +1,6 @@
					 | 
				
			||||
class AdminUser < ApplicationRecord | 
				
			||||
  # Include default devise modules. Others available are: | 
				
			||||
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable | 
				
			||||
  devise :database_authenticatable,  | 
				
			||||
         :recoverable, :rememberable, :validatable | 
				
			||||
end | 
				
			||||
@ -0,0 +1,3 @@
					 | 
				
			||||
class IncomeRange < ApplicationRecord | 
				
			||||
 | 
				
			||||
end | 
				
			||||
@ -0,0 +1,335 @@
					 | 
				
			||||
ActiveAdmin.setup do |config| | 
				
			||||
  # == Site Title | 
				
			||||
  # | 
				
			||||
  # Set the title that is displayed on the main layout | 
				
			||||
  # for each of the active admin pages. | 
				
			||||
  # | 
				
			||||
  config.site_title = "DLUHC CORE" | 
				
			||||
 | 
				
			||||
  # Set the link url for the title. For example, to take | 
				
			||||
  # users to your main site. Defaults to no link. | 
				
			||||
  # | 
				
			||||
  # config.site_title_link = "/" | 
				
			||||
 | 
				
			||||
  # Set an optional image to be displayed for the header | 
				
			||||
  # instead of a string (overrides :site_title) | 
				
			||||
  # | 
				
			||||
  # Note: Aim for an image that's 21px high so it fits in the header. | 
				
			||||
  # | 
				
			||||
  # config.site_title_image = "logo.png" | 
				
			||||
 | 
				
			||||
  # == Default Namespace | 
				
			||||
  # | 
				
			||||
  # Set the default namespace each administration resource | 
				
			||||
  # will be added to. | 
				
			||||
  # | 
				
			||||
  # eg: | 
				
			||||
  #   config.default_namespace = :hello_world | 
				
			||||
  # | 
				
			||||
  # This will create resources in the HelloWorld module and | 
				
			||||
  # will namespace routes to /hello_world/* | 
				
			||||
  # | 
				
			||||
  # To set no namespace by default, use: | 
				
			||||
  #   config.default_namespace = false | 
				
			||||
  # | 
				
			||||
  # Default: | 
				
			||||
  # config.default_namespace = :admin | 
				
			||||
  # | 
				
			||||
  # You can customize the settings for each namespace by using | 
				
			||||
  # a namespace block. For example, to change the site title | 
				
			||||
  # within a namespace: | 
				
			||||
  # | 
				
			||||
  #   config.namespace :admin do |admin| | 
				
			||||
  #     admin.site_title = "Custom Admin Title" | 
				
			||||
  #   end | 
				
			||||
  # | 
				
			||||
  # This will ONLY change the title for the admin section. Other | 
				
			||||
  # namespaces will continue to use the main "site_title" configuration. | 
				
			||||
 | 
				
			||||
  # == User Authentication | 
				
			||||
  # | 
				
			||||
  # Active Admin will automatically call an authentication | 
				
			||||
  # method in a before filter of all controller actions to | 
				
			||||
  # ensure that there is a currently logged in admin user. | 
				
			||||
  # | 
				
			||||
  # This setting changes the method which Active Admin calls | 
				
			||||
  # within the application controller. | 
				
			||||
  config.authentication_method = :authenticate_admin_user! | 
				
			||||
 | 
				
			||||
  # == User Authorization | 
				
			||||
  # | 
				
			||||
  # Active Admin will automatically call an authorization | 
				
			||||
  # method in a before filter of all controller actions to | 
				
			||||
  # ensure that there is a user with proper rights. You can use | 
				
			||||
  # CanCanAdapter or make your own. Please refer to documentation. | 
				
			||||
  # config.authorization_adapter = ActiveAdmin::CanCanAdapter | 
				
			||||
 | 
				
			||||
  # In case you prefer Pundit over other solutions you can here pass | 
				
			||||
  # the name of default policy class. This policy will be used in every | 
				
			||||
  # case when Pundit is unable to find suitable policy. | 
				
			||||
  # config.pundit_default_policy = "MyDefaultPunditPolicy" | 
				
			||||
 | 
				
			||||
  # If you wish to maintain a separate set of Pundit policies for admin | 
				
			||||
  # resources, you may set a namespace here that Pundit will search | 
				
			||||
  # within when looking for a resource's policy. | 
				
			||||
  # config.pundit_policy_namespace = :admin | 
				
			||||
 | 
				
			||||
  # You can customize your CanCan Ability class name here. | 
				
			||||
  # config.cancan_ability_class = "Ability" | 
				
			||||
 | 
				
			||||
  # You can specify a method to be called on unauthorized access. | 
				
			||||
  # This is necessary in order to prevent a redirect loop which happens | 
				
			||||
  # because, by default, user gets redirected to Dashboard. If user | 
				
			||||
  # doesn't have access to Dashboard, he'll end up in a redirect loop. | 
				
			||||
  # Method provided here should be defined in application_controller.rb. | 
				
			||||
  # config.on_unauthorized_access = :access_denied | 
				
			||||
 | 
				
			||||
  # == Current User | 
				
			||||
  # | 
				
			||||
  # Active Admin will associate actions with the current | 
				
			||||
  # user performing them. | 
				
			||||
  # | 
				
			||||
  # This setting changes the method which Active Admin calls | 
				
			||||
  # (within the application controller) to return the currently logged in user. | 
				
			||||
  config.current_user_method = :current_admin_user | 
				
			||||
 | 
				
			||||
  # == Logging Out | 
				
			||||
  # | 
				
			||||
  # Active Admin displays a logout link on each screen. These | 
				
			||||
  # settings configure the location and method used for the link. | 
				
			||||
  # | 
				
			||||
  # This setting changes the path where the link points to. If it's | 
				
			||||
  # a string, the strings is used as the path. If it's a Symbol, we | 
				
			||||
  # will call the method to return the path. | 
				
			||||
  # | 
				
			||||
  # Default: | 
				
			||||
  config.logout_link_path = :destroy_admin_user_session_path | 
				
			||||
 | 
				
			||||
  # This setting changes the http method used when rendering the | 
				
			||||
  # link. For example :get, :delete, :put, etc.. | 
				
			||||
  # | 
				
			||||
  # Default: | 
				
			||||
  # config.logout_link_method = :get | 
				
			||||
 | 
				
			||||
  # == Root | 
				
			||||
  # | 
				
			||||
  # Set the action to call for the root path. You can set different | 
				
			||||
  # roots for each namespace. | 
				
			||||
  # | 
				
			||||
  # Default: | 
				
			||||
  # config.root_to = 'dashboard#index' | 
				
			||||
 | 
				
			||||
  # == Admin Comments | 
				
			||||
  # | 
				
			||||
  # This allows your users to comment on any resource registered with Active Admin. | 
				
			||||
  # | 
				
			||||
  # You can completely disable comments: | 
				
			||||
  # config.comments = false | 
				
			||||
  # | 
				
			||||
  # You can change the name under which comments are registered: | 
				
			||||
  # config.comments_registration_name = 'AdminComment' | 
				
			||||
  # | 
				
			||||
  # You can change the order for the comments and you can change the column | 
				
			||||
  # to be used for ordering: | 
				
			||||
  # config.comments_order = 'created_at ASC' | 
				
			||||
  # | 
				
			||||
  # You can disable the menu item for the comments index page: | 
				
			||||
  # config.comments_menu = false | 
				
			||||
  # | 
				
			||||
  # You can customize the comment menu: | 
				
			||||
  # config.comments_menu = { parent: 'Admin', priority: 1 } | 
				
			||||
 | 
				
			||||
  # == Batch Actions | 
				
			||||
  # | 
				
			||||
  # Enable and disable Batch Actions | 
				
			||||
  # | 
				
			||||
  config.batch_actions = true | 
				
			||||
 | 
				
			||||
  # == Controller Filters | 
				
			||||
  # | 
				
			||||
  # You can add before, after and around filters to all of your | 
				
			||||
  # Active Admin resources and pages from here. | 
				
			||||
  # | 
				
			||||
  # config.before_action :do_something_awesome | 
				
			||||
 | 
				
			||||
  # == Attribute Filters | 
				
			||||
  # | 
				
			||||
  # You can exclude possibly sensitive model attributes from being displayed, | 
				
			||||
  # added to forms, or exported by default by ActiveAdmin | 
				
			||||
  # | 
				
			||||
  config.filter_attributes = [:encrypted_password, :password, :password_confirmation] | 
				
			||||
 | 
				
			||||
  # == Localize Date/Time Format | 
				
			||||
  # | 
				
			||||
  # Set the localize format to display dates and times. | 
				
			||||
  # To understand how to localize your app with I18n, read more at | 
				
			||||
  # https://guides.rubyonrails.org/i18n.html | 
				
			||||
  # | 
				
			||||
  # You can run `bin/rails runner 'puts I18n.t("date.formats")'` to see the | 
				
			||||
  # available formats in your application. | 
				
			||||
  # | 
				
			||||
  config.localize_format = :long | 
				
			||||
 | 
				
			||||
  # == Setting a Favicon | 
				
			||||
  # | 
				
			||||
  # config.favicon = 'favicon.ico' | 
				
			||||
 | 
				
			||||
  # == Meta Tags | 
				
			||||
  # | 
				
			||||
  # Add additional meta tags to the head element of active admin pages. | 
				
			||||
  # | 
				
			||||
  # Add tags to all pages logged in users see: | 
				
			||||
  #   config.meta_tags = { author: 'My Company' } | 
				
			||||
 | 
				
			||||
  # By default, sign up/sign in/recover password pages are excluded | 
				
			||||
  # from showing up in search engine results by adding a robots meta | 
				
			||||
  # tag. You can reset the hash of meta tags included in logged out | 
				
			||||
  # pages: | 
				
			||||
  #   config.meta_tags_for_logged_out_pages = {} | 
				
			||||
 | 
				
			||||
  # == Removing Breadcrumbs | 
				
			||||
  # | 
				
			||||
  # Breadcrumbs are enabled by default. You can customize them for individual | 
				
			||||
  # resources or you can disable them globally from here. | 
				
			||||
  # | 
				
			||||
  # config.breadcrumb = false | 
				
			||||
 | 
				
			||||
  # == Create Another Checkbox | 
				
			||||
  # | 
				
			||||
  # Create another checkbox is disabled by default. You can customize it for individual | 
				
			||||
  # resources or you can enable them globally from here. | 
				
			||||
  # | 
				
			||||
  # config.create_another = true | 
				
			||||
 | 
				
			||||
  # == Register Stylesheets & Javascripts | 
				
			||||
  # | 
				
			||||
  # We recommend using the built in Active Admin layout and loading | 
				
			||||
  # up your own stylesheets / javascripts to customize the look | 
				
			||||
  # and feel. | 
				
			||||
  # | 
				
			||||
  # To load a stylesheet: | 
				
			||||
  #   config.register_stylesheet 'my_stylesheet.css' | 
				
			||||
  # | 
				
			||||
  # You can provide an options hash for more control, which is passed along to stylesheet_link_tag(): | 
				
			||||
  #   config.register_stylesheet 'my_print_stylesheet.css', media: :print | 
				
			||||
  # | 
				
			||||
  # To load a javascript file: | 
				
			||||
  #   config.register_javascript 'my_javascript.js' | 
				
			||||
 | 
				
			||||
  # == CSV options | 
				
			||||
  # | 
				
			||||
  # Set the CSV builder separator | 
				
			||||
  # config.csv_options = { col_sep: ';' } | 
				
			||||
  # | 
				
			||||
  # Force the use of quotes | 
				
			||||
  # config.csv_options = { force_quotes: true } | 
				
			||||
 | 
				
			||||
  # == Menu System | 
				
			||||
  # | 
				
			||||
  # You can add a navigation menu to be used in your application, or configure a provided menu | 
				
			||||
  # | 
				
			||||
  # To change the default utility navigation to show a link to your website & a logout btn | 
				
			||||
  # | 
				
			||||
  #   config.namespace :admin do |admin| | 
				
			||||
  #     admin.build_menu :utility_navigation do |menu| | 
				
			||||
  #       menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank } | 
				
			||||
  #       admin.add_logout_button_to_menu menu | 
				
			||||
  #     end | 
				
			||||
  #   end | 
				
			||||
  # | 
				
			||||
  # If you wanted to add a static menu item to the default menu provided: | 
				
			||||
  # | 
				
			||||
  #   config.namespace :admin do |admin| | 
				
			||||
  #     admin.build_menu :default do |menu| | 
				
			||||
  #       menu.add label: "My Great Website", url: "http://www.mygreatwebsite.com", html_options: { target: :blank } | 
				
			||||
  #     end | 
				
			||||
  #   end | 
				
			||||
 | 
				
			||||
  # == Download Links | 
				
			||||
  # | 
				
			||||
  # You can disable download links on resource listing pages, | 
				
			||||
  # or customize the formats shown per namespace/globally | 
				
			||||
  # | 
				
			||||
  # To disable/customize for the :admin namespace: | 
				
			||||
  # | 
				
			||||
  #   config.namespace :admin do |admin| | 
				
			||||
  # | 
				
			||||
  #     # Disable the links entirely | 
				
			||||
  #     admin.download_links = false | 
				
			||||
  # | 
				
			||||
  #     # Only show XML & PDF options | 
				
			||||
  #     admin.download_links = [:xml, :pdf] | 
				
			||||
  # | 
				
			||||
  #     # Enable/disable the links based on block | 
				
			||||
  #     #   (for example, with cancan) | 
				
			||||
  #     admin.download_links = proc { can?(:view_download_links) } | 
				
			||||
  # | 
				
			||||
  #   end | 
				
			||||
 | 
				
			||||
  # == Pagination | 
				
			||||
  # | 
				
			||||
  # Pagination is enabled by default for all resources. | 
				
			||||
  # You can control the default per page count for all resources here. | 
				
			||||
  # | 
				
			||||
  # config.default_per_page = 30 | 
				
			||||
  # | 
				
			||||
  # You can control the max per page count too. | 
				
			||||
  # | 
				
			||||
  # config.max_per_page = 10_000 | 
				
			||||
 | 
				
			||||
  # == Filters | 
				
			||||
  # | 
				
			||||
  # By default the index screen includes a "Filters" sidebar on the right | 
				
			||||
  # hand side with a filter for each attribute of the registered model. | 
				
			||||
  # You can enable or disable them for all resources here. | 
				
			||||
  # | 
				
			||||
  # config.filters = true | 
				
			||||
  # | 
				
			||||
  # By default the filters include associations in a select, which means | 
				
			||||
  # that every record will be loaded for each association (up | 
				
			||||
  # to the value of config.maximum_association_filter_arity). | 
				
			||||
  # You can enabled or disable the inclusion | 
				
			||||
  # of those filters by default here. | 
				
			||||
  # | 
				
			||||
  # config.include_default_association_filters = true | 
				
			||||
 | 
				
			||||
  # config.maximum_association_filter_arity = 256 # default value of :unlimited will change to 256 in a future version | 
				
			||||
  # config.filter_columns_for_large_association = [ | 
				
			||||
  #    :display_name, | 
				
			||||
  #    :full_name, | 
				
			||||
  #    :name, | 
				
			||||
  #    :username, | 
				
			||||
  #    :login, | 
				
			||||
  #    :title, | 
				
			||||
  #    :email, | 
				
			||||
  #  ] | 
				
			||||
  # config.filter_method_for_large_association = '_starts_with' | 
				
			||||
 | 
				
			||||
  # == Head | 
				
			||||
  # | 
				
			||||
  # You can add your own content to the site head like analytics. Make sure | 
				
			||||
  # you only pass content you trust. | 
				
			||||
  # | 
				
			||||
  # config.head = ''.html_safe | 
				
			||||
 | 
				
			||||
  # == Footer | 
				
			||||
  # | 
				
			||||
  # By default, the footer shows the current Active Admin version. You can | 
				
			||||
  # override the content of the footer here. | 
				
			||||
  # | 
				
			||||
  # config.footer = 'my custom footer text' | 
				
			||||
 | 
				
			||||
  # == Sorting | 
				
			||||
  # | 
				
			||||
  # By default ActiveAdmin::OrderClause is used for sorting logic | 
				
			||||
  # You can inherit it with own class and inject it for all resources | 
				
			||||
  # | 
				
			||||
  # config.order_clause = MyOrderClause | 
				
			||||
 | 
				
			||||
  # == Webpacker | 
				
			||||
  # | 
				
			||||
  # By default, Active Admin uses Sprocket's asset pipeline. | 
				
			||||
  # You can switch to using Webpacker here. | 
				
			||||
  # | 
				
			||||
  config.use_webpacker = true | 
				
			||||
end | 
				
			||||
@ -0,0 +1,311 @@
					 | 
				
			||||
# frozen_string_literal: true | 
				
			||||
 | 
				
			||||
# Assuming you have not yet modified this file, each configuration option below | 
				
			||||
# is set to its default value. Note that some are commented out while others | 
				
			||||
# are not: uncommented lines are intended to protect your configuration from | 
				
			||||
# breaking changes in upgrades (i.e., in the event that future versions of | 
				
			||||
# Devise change the default values for those options). | 
				
			||||
# | 
				
			||||
# Use this hook to configure devise mailer, warden hooks and so forth. | 
				
			||||
# Many of these configuration options can be set straight in your model. | 
				
			||||
Devise.setup do |config| | 
				
			||||
  # The secret key used by Devise. Devise uses this key to generate | 
				
			||||
  # random tokens. Changing this key will render invalid all existing | 
				
			||||
  # confirmation, reset password and unlock tokens in the database. | 
				
			||||
  # Devise will use the `secret_key_base` as its `secret_key` | 
				
			||||
  # by default. You can change it below and use your own secret key. | 
				
			||||
  # config.secret_key = '38963532d88a2af58fe764dd1a449a771838bc61222c4654eb1737f05e488a557444859da1cca93c2307554b43b4991d65ff46a3f50234eb36fdf1d62a95b804' | 
				
			||||
 | 
				
			||||
  # ==> Controller configuration | 
				
			||||
  # Configure the parent class to the devise controllers. | 
				
			||||
  # config.parent_controller = 'DeviseController' | 
				
			||||
 | 
				
			||||
  # ==> Mailer Configuration | 
				
			||||
  # Configure the e-mail address which will be shown in Devise::Mailer, | 
				
			||||
  # note that it will be overwritten if you use your own mailer class | 
				
			||||
  # with default "from" parameter. | 
				
			||||
  config.mailer_sender = 'please-change-me-at-config-initializers-devise@example.com' | 
				
			||||
 | 
				
			||||
  # Configure the class responsible to send e-mails. | 
				
			||||
  # config.mailer = 'Devise::Mailer' | 
				
			||||
 | 
				
			||||
  # Configure the parent class responsible to send e-mails. | 
				
			||||
  # config.parent_mailer = 'ActionMailer::Base' | 
				
			||||
 | 
				
			||||
  # ==> ORM configuration | 
				
			||||
  # Load and configure the ORM. Supports :active_record (default) and | 
				
			||||
  # :mongoid (bson_ext recommended) by default. Other ORMs may be | 
				
			||||
  # available as additional gems. | 
				
			||||
  require 'devise/orm/active_record' | 
				
			||||
 | 
				
			||||
  # ==> Configuration for any authentication mechanism | 
				
			||||
  # Configure which keys are used when authenticating a user. The default is | 
				
			||||
  # just :email. You can configure it to use [:username, :subdomain], so for | 
				
			||||
  # authenticating a user, both parameters are required. Remember that those | 
				
			||||
  # parameters are used only when authenticating and not when retrieving from | 
				
			||||
  # session. If you need permissions, you should implement that in a before filter. | 
				
			||||
  # You can also supply a hash where the value is a boolean determining whether | 
				
			||||
  # or not authentication should be aborted when the value is not present. | 
				
			||||
  # config.authentication_keys = [:email] | 
				
			||||
 | 
				
			||||
  # Configure parameters from the request object used for authentication. Each entry | 
				
			||||
  # given should be a request method and it will automatically be passed to the | 
				
			||||
  # find_for_authentication method and considered in your model lookup. For instance, | 
				
			||||
  # if you set :request_keys to [:subdomain], :subdomain will be used on authentication. | 
				
			||||
  # The same considerations mentioned for authentication_keys also apply to request_keys. | 
				
			||||
  # config.request_keys = [] | 
				
			||||
 | 
				
			||||
  # Configure which authentication keys should be case-insensitive. | 
				
			||||
  # These keys will be downcased upon creating or modifying a user and when used | 
				
			||||
  # to authenticate or find a user. Default is :email. | 
				
			||||
  config.case_insensitive_keys = [:email] | 
				
			||||
 | 
				
			||||
  # Configure which authentication keys should have whitespace stripped. | 
				
			||||
  # These keys will have whitespace before and after removed upon creating or | 
				
			||||
  # modifying a user and when used to authenticate or find a user. Default is :email. | 
				
			||||
  config.strip_whitespace_keys = [:email] | 
				
			||||
 | 
				
			||||
  # Tell if authentication through request.params is enabled. True by default. | 
				
			||||
  # It can be set to an array that will enable params authentication only for the | 
				
			||||
  # given strategies, for example, `config.params_authenticatable = [:database]` will | 
				
			||||
  # enable it only for database (email + password) authentication. | 
				
			||||
  # config.params_authenticatable = true | 
				
			||||
 | 
				
			||||
  # Tell if authentication through HTTP Auth is enabled. False by default. | 
				
			||||
  # It can be set to an array that will enable http authentication only for the | 
				
			||||
  # given strategies, for example, `config.http_authenticatable = [:database]` will | 
				
			||||
  # enable it only for database authentication. | 
				
			||||
  # For API-only applications to support authentication "out-of-the-box", you will likely want to | 
				
			||||
  # enable this with :database unless you are using a custom strategy. | 
				
			||||
  # The supported strategies are: | 
				
			||||
  # :database      = Support basic authentication with authentication key + password | 
				
			||||
  # config.http_authenticatable = false | 
				
			||||
 | 
				
			||||
  # If 401 status code should be returned for AJAX requests. True by default. | 
				
			||||
  # config.http_authenticatable_on_xhr = true | 
				
			||||
 | 
				
			||||
  # The realm used in Http Basic Authentication. 'Application' by default. | 
				
			||||
  # config.http_authentication_realm = 'Application' | 
				
			||||
 | 
				
			||||
  # It will change confirmation, password recovery and other workflows | 
				
			||||
  # to behave the same regardless if the e-mail provided was right or wrong. | 
				
			||||
  # Does not affect registerable. | 
				
			||||
  # config.paranoid = true | 
				
			||||
 | 
				
			||||
  # By default Devise will store the user in session. You can skip storage for | 
				
			||||
  # particular strategies by setting this option. | 
				
			||||
  # Notice that if you are skipping storage for all authentication paths, you | 
				
			||||
  # may want to disable generating routes to Devise's sessions controller by | 
				
			||||
  # passing skip: :sessions to `devise_for` in your config/routes.rb | 
				
			||||
  config.skip_session_storage = [:http_auth] | 
				
			||||
 | 
				
			||||
  # By default, Devise cleans up the CSRF token on authentication to | 
				
			||||
  # avoid CSRF token fixation attacks. This means that, when using AJAX | 
				
			||||
  # requests for sign in and sign up, you need to get a new CSRF token | 
				
			||||
  # from the server. You can disable this option at your own risk. | 
				
			||||
  # config.clean_up_csrf_token_on_authentication = true | 
				
			||||
 | 
				
			||||
  # When false, Devise will not attempt to reload routes on eager load. | 
				
			||||
  # This can reduce the time taken to boot the app but if your application | 
				
			||||
  # requires the Devise mappings to be loaded during boot time the application | 
				
			||||
  # won't boot properly. | 
				
			||||
  # config.reload_routes = true | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :database_authenticatable | 
				
			||||
  # For bcrypt, this is the cost for hashing the password and defaults to 12. If | 
				
			||||
  # using other algorithms, it sets how many times you want the password to be hashed. | 
				
			||||
  # The number of stretches used for generating the hashed password are stored | 
				
			||||
  # with the hashed password. This allows you to change the stretches without | 
				
			||||
  # invalidating existing passwords. | 
				
			||||
  # | 
				
			||||
  # Limiting the stretches to just one in testing will increase the performance of | 
				
			||||
  # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use | 
				
			||||
  # a value less than 10 in other environments. Note that, for bcrypt (the default | 
				
			||||
  # algorithm), the cost increases exponentially with the number of stretches (e.g. | 
				
			||||
  # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation). | 
				
			||||
  config.stretches = Rails.env.test? ? 1 : 12 | 
				
			||||
 | 
				
			||||
  # Set up a pepper to generate the hashed password. | 
				
			||||
  # config.pepper = 'ea8d0964a2efaf3e37e444d5539399c3177246e228f173296767636ec2dc12a7f8ee7c5f291c2ff5886495b424d7c70216ccb8caf58162b1a284c51bf1705368' | 
				
			||||
 | 
				
			||||
  # Send a notification to the original email when the user's email is changed. | 
				
			||||
  # config.send_email_changed_notification = false | 
				
			||||
 | 
				
			||||
  # Send a notification email when the user's password is changed. | 
				
			||||
  # config.send_password_change_notification = false | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :confirmable | 
				
			||||
  # A period that the user is allowed to access the website even without | 
				
			||||
  # confirming their account. For instance, if set to 2.days, the user will be | 
				
			||||
  # able to access the website for two days without confirming their account, | 
				
			||||
  # access will be blocked just in the third day. | 
				
			||||
  # You can also set it to nil, which will allow the user to access the website | 
				
			||||
  # without confirming their account. | 
				
			||||
  # Default is 0.days, meaning the user cannot access the website without | 
				
			||||
  # confirming their account. | 
				
			||||
  # config.allow_unconfirmed_access_for = 2.days | 
				
			||||
 | 
				
			||||
  # A period that the user is allowed to confirm their account before their | 
				
			||||
  # token becomes invalid. For example, if set to 3.days, the user can confirm | 
				
			||||
  # their account within 3 days after the mail was sent, but on the fourth day | 
				
			||||
  # their account can't be confirmed with the token any more. | 
				
			||||
  # Default is nil, meaning there is no restriction on how long a user can take | 
				
			||||
  # before confirming their account. | 
				
			||||
  # config.confirm_within = 3.days | 
				
			||||
 | 
				
			||||
  # If true, requires any email changes to be confirmed (exactly the same way as | 
				
			||||
  # initial account confirmation) to be applied. Requires additional unconfirmed_email | 
				
			||||
  # db field (see migrations). Until confirmed, new email is stored in | 
				
			||||
  # unconfirmed_email column, and copied to email column on successful confirmation. | 
				
			||||
  config.reconfirmable = true | 
				
			||||
 | 
				
			||||
  # Defines which key will be used when confirming an account | 
				
			||||
  # config.confirmation_keys = [:email] | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :rememberable | 
				
			||||
  # The time the user will be remembered without asking for credentials again. | 
				
			||||
  # config.remember_for = 2.weeks | 
				
			||||
 | 
				
			||||
  # Invalidates all the remember me tokens when the user signs out. | 
				
			||||
  config.expire_all_remember_me_on_sign_out = true | 
				
			||||
 | 
				
			||||
  # If true, extends the user's remember period when remembered via cookie. | 
				
			||||
  # config.extend_remember_period = false | 
				
			||||
 | 
				
			||||
  # Options to be passed to the created cookie. For instance, you can set | 
				
			||||
  # secure: true in order to force SSL only cookies. | 
				
			||||
  # config.rememberable_options = {} | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :validatable | 
				
			||||
  # Range for password length. | 
				
			||||
  config.password_length = 6..128 | 
				
			||||
 | 
				
			||||
  # Email regex used to validate email formats. It simply asserts that | 
				
			||||
  # one (and only one) @ exists in the given string. This is mainly | 
				
			||||
  # to give user feedback and not to assert the e-mail validity. | 
				
			||||
  config.email_regexp = /\A[^@\s]+@[^@\s]+\z/ | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :timeoutable | 
				
			||||
  # The time you want to timeout the user session without activity. After this | 
				
			||||
  # time the user will be asked for credentials again. Default is 30 minutes. | 
				
			||||
  # config.timeout_in = 30.minutes | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :lockable | 
				
			||||
  # Defines which strategy will be used to lock an account. | 
				
			||||
  # :failed_attempts = Locks an account after a number of failed attempts to sign in. | 
				
			||||
  # :none            = No lock strategy. You should handle locking by yourself. | 
				
			||||
  # config.lock_strategy = :failed_attempts | 
				
			||||
 | 
				
			||||
  # Defines which key will be used when locking and unlocking an account | 
				
			||||
  # config.unlock_keys = [:email] | 
				
			||||
 | 
				
			||||
  # Defines which strategy will be used to unlock an account. | 
				
			||||
  # :email = Sends an unlock link to the user email | 
				
			||||
  # :time  = Re-enables login after a certain amount of time (see :unlock_in below) | 
				
			||||
  # :both  = Enables both strategies | 
				
			||||
  # :none  = No unlock strategy. You should handle unlocking by yourself. | 
				
			||||
  # config.unlock_strategy = :both | 
				
			||||
 | 
				
			||||
  # Number of authentication tries before locking an account if lock_strategy | 
				
			||||
  # is failed attempts. | 
				
			||||
  # config.maximum_attempts = 20 | 
				
			||||
 | 
				
			||||
  # Time interval to unlock the account if :time is enabled as unlock_strategy. | 
				
			||||
  # config.unlock_in = 1.hour | 
				
			||||
 | 
				
			||||
  # Warn on the last attempt before the account is locked. | 
				
			||||
  # config.last_attempt_warning = true | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :recoverable | 
				
			||||
  # | 
				
			||||
  # Defines which key will be used when recovering the password for an account | 
				
			||||
  # config.reset_password_keys = [:email] | 
				
			||||
 | 
				
			||||
  # Time interval you can reset your password with a reset password key. | 
				
			||||
  # Don't put a too small interval or your users won't have the time to | 
				
			||||
  # change their passwords. | 
				
			||||
  config.reset_password_within = 6.hours | 
				
			||||
 | 
				
			||||
  # When set to false, does not sign a user in automatically after their password is | 
				
			||||
  # reset. Defaults to true, so a user is signed in automatically after a reset. | 
				
			||||
  # config.sign_in_after_reset_password = true | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :encryptable | 
				
			||||
  # Allow you to use another hashing or encryption algorithm besides bcrypt (default). | 
				
			||||
  # You can use :sha1, :sha512 or algorithms from others authentication tools as | 
				
			||||
  # :clearance_sha1, :authlogic_sha512 (then you should set stretches above to 20 | 
				
			||||
  # for default behavior) and :restful_authentication_sha1 (then you should set | 
				
			||||
  # stretches to 10, and copy REST_AUTH_SITE_KEY to pepper). | 
				
			||||
  # | 
				
			||||
  # Require the `devise-encryptable` gem when using anything other than bcrypt | 
				
			||||
  # config.encryptor = :sha512 | 
				
			||||
 | 
				
			||||
  # ==> Scopes configuration | 
				
			||||
  # Turn scoped views on. Before rendering "sessions/new", it will first check for | 
				
			||||
  # "users/sessions/new". It's turned off by default because it's slower if you | 
				
			||||
  # are using only default views. | 
				
			||||
  # config.scoped_views = false | 
				
			||||
 | 
				
			||||
  # Configure the default scope given to Warden. By default it's the first | 
				
			||||
  # devise role declared in your routes (usually :user). | 
				
			||||
  # config.default_scope = :user | 
				
			||||
 | 
				
			||||
  # Set this configuration to false if you want /users/sign_out to sign out | 
				
			||||
  # only the current scope. By default, Devise signs out all scopes. | 
				
			||||
  # config.sign_out_all_scopes = true | 
				
			||||
 | 
				
			||||
  # ==> Navigation configuration | 
				
			||||
  # Lists the formats that should be treated as navigational. Formats like | 
				
			||||
  # :html, should redirect to the sign in page when the user does not have | 
				
			||||
  # access, but formats like :xml or :json, should return 401. | 
				
			||||
  # | 
				
			||||
  # If you have any extra navigational formats, like :iphone or :mobile, you | 
				
			||||
  # should add them to the navigational formats lists. | 
				
			||||
  # | 
				
			||||
  # The "*/*" below is required to match Internet Explorer requests. | 
				
			||||
  # config.navigational_formats = ['*/*', :html] | 
				
			||||
 | 
				
			||||
  # The default HTTP method used to sign out a resource. Default is :delete. | 
				
			||||
  config.sign_out_via = :delete | 
				
			||||
 | 
				
			||||
  # ==> OmniAuth | 
				
			||||
  # Add a new OmniAuth provider. Check the wiki for more information on setting | 
				
			||||
  # up on your models and hooks. | 
				
			||||
  # config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo' | 
				
			||||
 | 
				
			||||
  # ==> Warden configuration | 
				
			||||
  # If you want to use other strategies, that are not supported by Devise, or | 
				
			||||
  # change the failure app, you can configure them inside the config.warden block. | 
				
			||||
  # | 
				
			||||
  # config.warden do |manager| | 
				
			||||
  #   manager.intercept_401 = false | 
				
			||||
  #   manager.default_strategies(scope: :user).unshift :some_external_strategy | 
				
			||||
  # end | 
				
			||||
 | 
				
			||||
  # ==> Mountable engine configurations | 
				
			||||
  # When using Devise inside an engine, let's call it `MyEngine`, and this engine | 
				
			||||
  # is mountable, there are some extra configurations to be taken into account. | 
				
			||||
  # The following options are available, assuming the engine is mounted as: | 
				
			||||
  # | 
				
			||||
  #     mount MyEngine, at: '/my_engine' | 
				
			||||
  # | 
				
			||||
  # The router that invoked `devise_for`, in the example above, would be: | 
				
			||||
  # config.router_name = :my_engine | 
				
			||||
  # | 
				
			||||
  # When using OmniAuth, Devise cannot automatically set OmniAuth path, | 
				
			||||
  # so you need to do it manually. For the users scope, it would be: | 
				
			||||
  # config.omniauth_path_prefix = '/my_engine/users/auth' | 
				
			||||
 | 
				
			||||
  # ==> Turbolinks configuration | 
				
			||||
  # If your app is using Turbolinks, Turbolinks::Controller needs to be included to make redirection work correctly: | 
				
			||||
  # | 
				
			||||
  # ActiveSupport.on_load(:devise_failure_app) do | 
				
			||||
  #   include Turbolinks::Controller | 
				
			||||
  # end | 
				
			||||
 | 
				
			||||
  # ==> Configuration for :registerable | 
				
			||||
 | 
				
			||||
  # When set to false, does not sign a user in automatically after their password is | 
				
			||||
  # changed. Defaults to true, so a user is signed in automatically after changing a password. | 
				
			||||
  # config.sign_in_after_change_password = true | 
				
			||||
end | 
				
			||||
@ -0,0 +1,65 @@
					 | 
				
			||||
# Additional translations at https://github.com/heartcombo/devise/wiki/I18n | 
				
			||||
 | 
				
			||||
en: | 
				
			||||
  devise: | 
				
			||||
    confirmations: | 
				
			||||
      confirmed: "Your email address has been successfully confirmed." | 
				
			||||
      send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes." | 
				
			||||
      send_paranoid_instructions: "If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes." | 
				
			||||
    failure: | 
				
			||||
      already_authenticated: "You are already signed in." | 
				
			||||
      inactive: "Your account is not activated yet." | 
				
			||||
      invalid: "Invalid %{authentication_keys} or password." | 
				
			||||
      locked: "Your account is locked." | 
				
			||||
      last_attempt: "You have one more attempt before your account is locked." | 
				
			||||
      not_found_in_database: "Invalid %{authentication_keys} or password." | 
				
			||||
      timeout: "Your session expired. Please sign in again to continue." | 
				
			||||
      unauthenticated: "You need to sign in or sign up before continuing." | 
				
			||||
      unconfirmed: "You have to confirm your email address before continuing." | 
				
			||||
    mailer: | 
				
			||||
      confirmation_instructions: | 
				
			||||
        subject: "Confirmation instructions" | 
				
			||||
      reset_password_instructions: | 
				
			||||
        subject: "Reset password instructions" | 
				
			||||
      unlock_instructions: | 
				
			||||
        subject: "Unlock instructions" | 
				
			||||
      email_changed: | 
				
			||||
        subject: "Email Changed" | 
				
			||||
      password_change: | 
				
			||||
        subject: "Password Changed" | 
				
			||||
    omniauth_callbacks: | 
				
			||||
      failure: "Could not authenticate you from %{kind} because \"%{reason}\"." | 
				
			||||
      success: "Successfully authenticated from %{kind} account." | 
				
			||||
    passwords: | 
				
			||||
      no_token: "You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided." | 
				
			||||
      send_instructions: "You will receive an email with instructions on how to reset your password in a few minutes." | 
				
			||||
      send_paranoid_instructions: "If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes." | 
				
			||||
      updated: "Your password has been changed successfully. You are now signed in." | 
				
			||||
      updated_not_active: "Your password has been changed successfully." | 
				
			||||
    registrations: | 
				
			||||
      destroyed: "Bye! Your account has been successfully cancelled. We hope to see you again soon." | 
				
			||||
      signed_up: "Welcome! You have signed up successfully." | 
				
			||||
      signed_up_but_inactive: "You have signed up successfully. However, we could not sign you in because your account is not yet activated." | 
				
			||||
      signed_up_but_locked: "You have signed up successfully. However, we could not sign you in because your account is locked." | 
				
			||||
      signed_up_but_unconfirmed: "A message with a confirmation link has been sent to your email address. Please follow the link to activate your account." | 
				
			||||
      update_needs_confirmation: "You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirmation link to confirm your new email address." | 
				
			||||
      updated: "Your account has been updated successfully." | 
				
			||||
      updated_but_not_signed_in: "Your account has been updated successfully, but since your password was changed, you need to sign in again." | 
				
			||||
    sessions: | 
				
			||||
      signed_in: "Signed in successfully." | 
				
			||||
      signed_out: "Signed out successfully." | 
				
			||||
      already_signed_out: "Signed out successfully." | 
				
			||||
    unlocks: | 
				
			||||
      send_instructions: "You will receive an email with instructions for how to unlock your account in a few minutes." | 
				
			||||
      send_paranoid_instructions: "If your account exists, you will receive an email with instructions for how to unlock it in a few minutes." | 
				
			||||
      unlocked: "Your account has been unlocked successfully. Please sign in to continue." | 
				
			||||
  errors: | 
				
			||||
    messages: | 
				
			||||
      already_confirmed: "was already confirmed, please try signing in" | 
				
			||||
      confirmation_period_expired: "needs to be confirmed within %{period}, please request a new one" | 
				
			||||
      expired: "has expired, please request a new one" | 
				
			||||
      not_found: "not found" | 
				
			||||
      not_locked: "was not locked" | 
				
			||||
      not_saved: | 
				
			||||
        one: "1 error prohibited this %{resource} from being saved:" | 
				
			||||
        other: "%{count} errors prohibited this %{resource} from being saved:" | 
				
			||||
@ -1,3 +1,5 @@
					 | 
				
			||||
const { environment } = require('@rails/webpacker') | 
				
			||||
const jquery = require('./plugins/jquery') | 
				
			||||
 | 
				
			||||
environment.plugins.prepend('jquery', jquery) | 
				
			||||
module.exports = environment | 
				
			||||
					 | 
				
			||||
@ -0,0 +1,7 @@
					 | 
				
			||||
const webpack = require('webpack') | 
				
			||||
 | 
				
			||||
module.exports = new webpack.ProvidePlugin({ | 
				
			||||
  "$":"jquery", | 
				
			||||
  "jQuery":"jquery", | 
				
			||||
  "window.jQuery":"jquery" | 
				
			||||
}); | 
				
			||||
@ -0,0 +1,12 @@
					 | 
				
			||||
class CreateIncomeRanges < ActiveRecord::Migration[6.1] | 
				
			||||
  def change | 
				
			||||
    create_table :income_ranges do |t| | 
				
			||||
      t.string :economic_status | 
				
			||||
      t.integer :soft_min | 
				
			||||
      t.integer :soft_max | 
				
			||||
      t.integer :hard_min | 
				
			||||
      t.integer :hard_max | 
				
			||||
      t.timestamps | 
				
			||||
    end | 
				
			||||
  end | 
				
			||||
end | 
				
			||||
@ -0,0 +1,44 @@
					 | 
				
			||||
# frozen_string_literal: true | 
				
			||||
 | 
				
			||||
class DeviseCreateAdminUsers < ActiveRecord::Migration[6.1] | 
				
			||||
  def change | 
				
			||||
    create_table :admin_users do |t| | 
				
			||||
      ## Database authenticatable | 
				
			||||
      t.string :email,              null: false, default: "" | 
				
			||||
      t.string :encrypted_password, null: false, default: "" | 
				
			||||
 | 
				
			||||
      ## Recoverable | 
				
			||||
      t.string   :reset_password_token | 
				
			||||
      t.datetime :reset_password_sent_at | 
				
			||||
 | 
				
			||||
      ## Rememberable | 
				
			||||
      t.datetime :remember_created_at | 
				
			||||
 | 
				
			||||
      ## Trackable | 
				
			||||
      # t.integer  :sign_in_count, default: 0, null: false | 
				
			||||
      # t.datetime :current_sign_in_at | 
				
			||||
      # t.datetime :last_sign_in_at | 
				
			||||
      # t.string   :current_sign_in_ip | 
				
			||||
      # t.string   :last_sign_in_ip | 
				
			||||
 | 
				
			||||
      ## Confirmable | 
				
			||||
      # t.string   :confirmation_token | 
				
			||||
      # t.datetime :confirmed_at | 
				
			||||
      # t.datetime :confirmation_sent_at | 
				
			||||
      # t.string   :unconfirmed_email # Only if using reconfirmable | 
				
			||||
 | 
				
			||||
      ## Lockable | 
				
			||||
      # t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts | 
				
			||||
      # t.string   :unlock_token # Only if unlock strategy is :email or :both | 
				
			||||
      # t.datetime :locked_at | 
				
			||||
 | 
				
			||||
 | 
				
			||||
      t.timestamps null: false | 
				
			||||
    end | 
				
			||||
 | 
				
			||||
    add_index :admin_users, :email,                unique: true | 
				
			||||
    add_index :admin_users, :reset_password_token, unique: true | 
				
			||||
    # add_index :admin_users, :confirmation_token,   unique: true | 
				
			||||
    # add_index :admin_users, :unlock_token,         unique: true | 
				
			||||
  end | 
				
			||||
end | 
				
			||||
@ -0,0 +1,16 @@
					 | 
				
			||||
class CreateActiveAdminComments < ActiveRecord::Migration[6.1] | 
				
			||||
  def self.up | 
				
			||||
    create_table :active_admin_comments do |t| | 
				
			||||
      t.string :namespace | 
				
			||||
      t.text   :body | 
				
			||||
      t.references :resource, polymorphic: true | 
				
			||||
      t.references :author, polymorphic: true | 
				
			||||
      t.timestamps | 
				
			||||
    end | 
				
			||||
    add_index :active_admin_comments, [:namespace] | 
				
			||||
  end | 
				
			||||
 | 
				
			||||
  def self.down | 
				
			||||
    drop_table :active_admin_comments | 
				
			||||
  end | 
				
			||||
end | 
				
			||||
					Loading…
					
					
				
		Reference in new issue