module Curupira::Generators::ModelGeneratorsHelper

Public Instance Methods

action_label_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 141
def action_label_columns
  @action_label_columns ||= {}
end
action_label_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 145
def action_label_indexes
  @action_label_indexes ||= {}
end
action_label_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 231
      def action_label_model_content
        <<-CONTENT
          belongs_to :feature
        CONTENT
      end
authorization_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 100
def authorization_columns
  @authorization_columns ||= {}
end
authorization_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 104
def authorization_indexes
  @authorization_indexes ||= {}
end
authorization_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 162
      def authorization_model_content
        <<-CONTENT
          belongs_to :feature
          belongs_to :role
        CONTENT
      end
columns_by(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 237
def columns_by(model_name)
  self.send("#{model_name}_columns")
end
copy_migration(migration_name, config = {}) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 21
def copy_migration(migration_name, config = {})
  unless migration_exists?(migration_name)
    migration_template(
      "db/migrate/#{migration_name}",
      "db/migrate/#{migration_name}",
      config
    )
  end
end
create_add_columns_migration_to(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 10
def create_add_columns_migration_to(model_name)
  if migration_needed?(model_name)
    config = {
      columns: columns_by(model_name),
      indexes: indexes_by(model_name)
    }
    
    copy_migration("add_curupira_to_#{model_name.pluralize}.rb", config)
  end
end
create_migration_to(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 31
def create_migration_to(model_name)
  if table_exists?(model_name)
    create_add_columns_migration_to(model_name)    
  else
    copy_migration "create_#{model_name.pluralize}.rb"
  end
end
create_model(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 149
def create_model(model_name)
  copy_file "models/#{model_name}.rb", "app/models/#{model_name}.rb" unless model_exists?("app/models/#{model_name}.rb")
  content = self.send("#{model_name}_model_content").split("\n").map { |line| "  " + line.strip! } .join("\n") << "\n"
  inject_into_class("app/models/#{model_name}.rb", model_name.camelize, content)
end
existing_columns_to(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 253
def existing_columns_to(model_name)
  ActiveRecord::Base.connection.columns(model_name.pluralize.to_sym).map(&:name)
end
existing_indexes_to(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 257
def existing_indexes_to(model_name)
  ActiveRecord::Base.connection.indexes(model_name.pluralize.to_sym).map(&:name)
end
existing_migrations() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 43
def existing_migrations
  @existing_migrations ||= Dir.glob("db/migrate/*.rb").map do |file|
    migration_name_without_timestamp(file)
  end
end
feature_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 92
def feature_columns
  @feature_columns ||= {}
end
feature_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 96
def feature_indexes
  @feature_indexes ||= {}
end
feature_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 208
      def feature_model_content
        <<-CONTENT
          has_many :action_labels
        CONTENT
      end
group_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 84
def group_columns
  @group_columns ||= {}
end
group_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 88
def group_indexes
  @group_indexes ||= {}
end
group_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 183
      def group_model_content
        <<-CONTENT
          has_many :role_groups
          has_many :roles, through: :role_groups
          has_many :group_users
          has_many :users, through: :group_users
          accepts_nested_attributes_for :role_groups, reject_if: :all_blank, allow_destroy: :true
          validates_presence_of :name
          scope :active, -> { where active: true }
        CONTENT
      end
group_user_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 133
def group_user_columns
  @group_user_columns ||= {}
end
group_user_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 137
def group_user_indexes
  @group_user_indexes ||= {}
end
group_user_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 214
      def group_user_model_content
        <<-CONTENT
          belongs_to :group
          belongs_to :user
          has_many :role_group_users
          accepts_nested_attributes_for :role_group_users, reject_if: :all_blank, allow_destroy: :true
          scope :active, -> { where active: true }
        CONTENT
      end
indexes_by(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 241
def indexes_by(model_name)
  self.send("#{model_name}_indexes")
end
migration_exists?(name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 39
def migration_exists?(name)
  existing_migrations.include?(name)
end
migration_name_without_timestamp(file) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 49
def migration_name_without_timestamp(file)
  file.sub(%r{^.*(db/migrate/)(?:\d+_)?}, '')
end
migration_needed?(model_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 53
def migration_needed?(model_name)
  columns_by(model_name).any? || indexes_by(model_name).any?
end
model_exists?(model_path) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 245
def model_exists?(model_path)
  File.exists?(File.join(destination_root, model_path))
end
role_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 76
def role_columns
  @role_columns ||= {}
end
role_group_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 116
def role_group_columns
  @role_group_columns ||= {}
end
role_group_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 120
def role_group_indexes
  @role_group_indexes ||= {}
end
role_group_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 224
      def role_group_model_content
        <<-CONTENT
          belongs_to :role
          belongs_to :group
        CONTENT
      end
role_group_user_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 108
def role_group_user_columns
  @role_group_user_columns ||= {}
end
role_group_user_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 112
def role_group_user_indexes
  @role_group_user_indexes ||= {}
end
role_group_user_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 155
      def role_group_user_model_content
        <<-CONTENT
          belongs_to :group_user
          belongs_to :role
        CONTENT
      end
role_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 80
def role_indexes
  @role_indexes ||= {}
end
role_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 195
      def role_model_content
        <<-CONTENT
          has_many :authorizations
          has_many :features, through: :authorizations
          has_many :role_group_users
          has_many :group_users, through: :role_group_users
          has_many :role_groups
          has_many :groups, through: :role_groups
          accepts_nested_attributes_for :authorizations, reject_if: :all_blank, allow_destroy: :true
          validates_presence_of :name
        CONTENT
      end
table_exists?(table_name) click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 6
def table_exists?(table_name)
  ActiveRecord::Base.connection.table_exists?(table_name)
end
user_columns() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 57
def user_columns
  @user_columns ||= {
    email: 't.string :email, null: false',
    name: 't.string :name, null: false',
    active: 't.boolean :active, null: false',
    username: 't.string',
    crypted_password: 't.string :crypted_password',
    salt: 't.string :salt, default: nil',
    reset_password_token: 't.string :reset_password_token, default: nil',
    reset_password_token_expires_at: 't.datetime :reset_password_token_expires_at, default: nil',
    reset_password_email_sent_at: 't.datetime :reset_password_email_sent_at, default: nil',
    last_login_at: 't.datetime :last_login_at, default: nil',
    last_logout_at: 't.datetime :last_logout_at, default: nil',
    last_activity_at: 't.datetime :last_activity_at, default: nil',
    last_login_from_ip_address: 't.string :last_login_from_ip_address, default: nil',
    admin: 't.boolean :admin, default: false'
  }.reject { |column| existing_columns_to("user").include?(column.to_s) }
end
user_indexes() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 124
def user_indexes
  @user_indexes ||= {
    index_users_on_username: 'add_index :users, :username, unique: true',
    index_users_on_reset_password_token: 'add_index :users, :reset_password_token',
    index_users_on_last_logout_at: 'add_index :users, :last_logout_at',
    index_users_on_last_activity_at: 'add_index :users, :last_activity_at'
  }.reject { |index| existing_indexes_to("user").include?(index.to_s) }
end
user_model_content() click to toggle source
# File lib/generators/curupira/install/model_generators_helper.rb, line 169
      def user_model_content
        <<-CONTENT
          authenticates_with_sorcery!
          validates_presence_of :email
          has_many :group_users
          has_many :groups, through: :group_users
          has_many :role_group_users, through: :group_users
          accepts_nested_attributes_for :group_users, reject_if: :all_blank, allow_destroy: :true
          accepts_nested_attributes_for :role_group_users, reject_if: :all_blank, allow_destroy: :true
          
          scope :all_belonging_to, -> (user) { includes(group_users: :group).where(groups: { id: user.groups }) }
        CONTENT
      end