Class: ActiveAdmin::Logins::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- ActiveAdmin::Logins::Generators::InstallGenerator
- Includes:
- Rails::Generators::Migration
- Defined in:
- lib/generators/active_admin/logins/install/install_generator.rb
Instance Method Summary collapse
Instance Method Details
#create_migrations ⇒ Object
79 80 81 |
# File 'lib/generators/active_admin/logins/install/install_generator.rb', line 79 def create_migrations migration_template 'migrations/create_user_logins.rb', 'db/migrate/create_user_logins.rb' end |
#create_user_login_file ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/generators/active_admin/logins/install/install_generator.rb', line 14 def create_user_login_file create_file "app/admin/user_login.rb" do %Q{ActiveAdmin.register UserLogin do config.batch_actions = false config.sort_order = 'created_at_desc' filter :ip, as: :string filter :user_agent filter :created_at filter :country filter :city # In order to hack the heroku issue with collations # We're sorting in rails and not on the DB level filter :user, collection: proc { User.all.sort_by { |u| u.email.downcase } } index do column(:user, sortable: "users.email") do |login| link_to login.user.email, admin_user_path(login.user) end column :ip column :user_agent column :country column :city column(:date, sortable: "created_at") do |login| login.created_at end column(:filter) do |login| link_to(I18n.t("messages.filters.this_user", default: "Filter by this user"), admin_user_logins_path({ q: { user_id_eq: login.user.id } })) end end controller do def scoped_collection super.includes :user # prevents N+1 queries to your database end end end } end end |
#inject_into_user_model ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/generators/active_admin/logins/install/install_generator.rb', line 58 def inject_into_user_model if Rails.version.to_i < 5 class_line = "class User < ActiveRecord::Base" else class_line = "class User < ApplicationRecord" end inject_into_file 'app/models/user.rb', after: "#{class_line}\n" do <<-'RUBY' has_many :user_logins, dependent: :destroy def update_tracked_fields!(request) super UserLoginWorker.perform_async(self.id, request.remote_ip, request.user_agent) end RUBY end end |