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.



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

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.



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

def class_name
  @class_name
end

Class Method Details

.from_env(env = ENV) ⇒ Object



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

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

.from_name(name) ⇒ Object



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

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

Instance Method Details

#adapt_example_test_source(content) ⇒ Object



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

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



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

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

#controller_pathObject



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

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

#default?Boolean

Returns:

  • (Boolean)


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

def default?
  class_name == DEFAULT_CLASS
end

#devise_migration_basenameObject



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

def devise_migration_basename
  "devise_create_#{table_name}"
end

#devise_migration_classObject



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

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

#devise_route_lineObject



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

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



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

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

#join_migration_basenameObject



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

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

#join_migration_classObject



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

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).



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

def join_table
  return "roles_users" if default?

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

#model_pathObject



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

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

#plural_routeObject



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

def plural_route
  table_name
end

#sign_in_path_fragmentObject



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

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

#tab_keyObject



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

def tab_key
  class_name.underscore.to_sym
end

#table_nameObject



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

def table_name
  class_name.tableize
end