Class: InlineFormsInstaller::UserModelConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/inline_forms_installer/user_model_config.rb

Overview

Devise mapping stays on :users (Warden scope :user → current_user in inline_forms). A custom class (e.g. Member) uses members table, /members routes, and devise_for :users, class_name: "Member", path: "members".

Constant Summary collapse

DEFAULT_CLASS =
"User"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(class_name) ⇒ UserModelConfig

Returns a new instance of UserModelConfig.



21
22
23
24
25
26
27
# File 'lib/inline_forms_installer/user_model_config.rb', line 21

def initialize(class_name)
  unless class_name.match?(/\A[A-Z][A-Za-z0-9]*\z/)
    raise ArgumentError, "user model must be a Ruby constant (e.g. User, Member)"
  end

  @class_name = class_name
end

Instance Attribute Details

#class_nameObject (readonly)

Returns the value of attribute class_name.



29
30
31
# File 'lib/inline_forms_installer/user_model_config.rb', line 29

def class_name
  @class_name
end

Class Method Details

.from_env(env = ENV) ⇒ Object



12
13
14
# File 'lib/inline_forms_installer/user_model_config.rb', line 12

def self.from_env(env = ENV)
  from_name(env["user_model"].to_s.strip)
end

.from_name(name) ⇒ Object



16
17
18
19
# File 'lib/inline_forms_installer/user_model_config.rb', line 16

def self.from_name(name)
  name = DEFAULT_CLASS if name.empty?
  new(name)
end

Instance Method Details

#adapt_example_test_source(content) ⇒ Object



98
99
100
101
102
103
# File 'lib/inline_forms_installer/user_model_config.rb', line 98

def adapt_example_test_source(content)
  return content if default?

  content = content.gsub("User", class_name)
  content.gsub(%r{/auth/users/sign_in}, )
end

#controller_nameObject



54
55
56
# File 'lib/inline_forms_installer/user_model_config.rb', line 54

def controller_name
  "#{class_name.pluralize}Controller"
end

#controller_pathObject



58
59
60
# File 'lib/inline_forms_installer/user_model_config.rb', line 58

def controller_path
  "app/controllers/#{table_name}_controller.rb"
end

#default?Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/inline_forms_installer/user_model_config.rb', line 31

def default?
  class_name == DEFAULT_CLASS
end

#devise_migration_basenameObject



70
71
72
# File 'lib/inline_forms_installer/user_model_config.rb', line 70

def devise_migration_basename
  "devise_create_#{table_name}"
end

#devise_migration_classObject



74
75
76
# File 'lib/inline_forms_installer/user_model_config.rb', line 74

def devise_migration_class
  "DeviseCreate#{class_name.pluralize}"
end

#devise_route_lineObject



86
87
88
89
90
91
92
# File 'lib/inline_forms_installer/user_model_config.rb', line 86

def devise_route_line
  if default?
    "devise_for :users, :path_prefix => 'auth'"
  else
    "devise_for :users, class_name: \"#{class_name}\", path: \"#{plural_route}\", path_prefix: 'auth'"
  end
end

#foreign_keyObject



43
44
45
# File 'lib/inline_forms_installer/user_model_config.rb', line 43

def foreign_key
  "#{class_name.underscore}_id"
end

#join_migration_basenameObject



78
79
80
# File 'lib/inline_forms_installer/user_model_config.rb', line 78

def join_migration_basename
  "inline_forms_create_join_table_#{class_name.underscore}_role"
end

#join_migration_classObject



82
83
84
# File 'lib/inline_forms_installer/user_model_config.rb', line 82

def join_migration_class
  "InlineFormsCreateJoinTable#{class_name}Role"
end

#join_tableObject

Rails HABTM join table: plural model names in lexical order (roles_users, members_roles).



48
49
50
51
52
# File 'lib/inline_forms_installer/user_model_config.rb', line 48

def join_table
  return "roles_users" if default?

  [ table_name, "roles" ].sort.join("_")
end

#model_pathObject



62
63
64
# File 'lib/inline_forms_installer/user_model_config.rb', line 62

def model_path
  "app/models/#{class_name.underscore}.rb"
end

#plural_routeObject



39
40
41
# File 'lib/inline_forms_installer/user_model_config.rb', line 39

def plural_route
  table_name
end

#sign_in_path_fragmentObject



94
95
96
# File 'lib/inline_forms_installer/user_model_config.rb', line 94

def 
  "/auth/#{default? ? 'users' : plural_route}/sign_in"
end

#tab_keyObject



66
67
68
# File 'lib/inline_forms_installer/user_model_config.rb', line 66

def tab_key
  class_name.underscore.to_sym
end

#table_nameObject



35
36
37
# File 'lib/inline_forms_installer/user_model_config.rb', line 35

def table_name
  class_name.tableize
end