Class: ActiveRecord::Generators::CheckPermissionGenerator
Instance Method Summary
collapse
#model_contents, #partial_content
Instance Method Details
#copy_permission_migration ⇒ Object
9
10
11
12
13
14
15
|
# File 'lib/generators/active_record/check_permission_generator.rb', line 9
def copy_permission_migration
if (behavior == :invoke && model_exists?) || (behavior == :revoke && migration_exists?(table_name))
else
migration_template "migration.rb", "db/migrate/permission_create_#{table_name}.rb"
end
end
|
#generate_helper ⇒ Object
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/generators/active_record/check_permission_generator.rb', line 30
def generate_helper
create_file Rails.root.join("app", "helpers", "permissions_helper.rb"), "
module PermissionsHelper
include CheckPermission
def has_permission
super(params)
end
end
" unless permissions_helper_exists?
end
|
#generate_model ⇒ Object
16
17
18
|
# File 'lib/generators/active_record/check_permission_generator.rb', line 16
def generate_model
invoke "active_record:model", [name], migration: false unless model_exists? && behavior == :invoke
end
|
#generate_model_permission ⇒ Object
20
21
22
23
24
|
# File 'lib/generators/active_record/check_permission_generator.rb', line 20
def generate_model_permission
permission = "Permission"
Rails::Generators.invoke("active_record:model", [permission,"is_read:boolean", "is_update:boolean",
"is_create:boolean", "is_destroy:boolean", "resource_name:string", "#{table_name.singularize}:references"], {migration: true, timestamps: true})
end
|
#generate_view ⇒ Object
26
27
28
|
# File 'lib/generators/active_record/check_permission_generator.rb', line 26
def generate_view
create_file Rails.root.join("app", "views", "permissions", "_permissions.html.rb"), "#{partial_content}" unless permission_view_exists?
end
|
#inject_permission_content ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
|
# File 'lib/generators/active_record/check_permission_generator.rb', line 41
def inject_permission_content
content = model_contents
class_path = if namespaced?
class_name.to_s.split("::")
else
[class_name]
end
indent_depth = class_path.size - 1
content = content.split("\n").map { |line| " " * indent_depth + line } .join("\n") << "\n"
inject_into_class(model_path, class_path.last, content) if model_exists?
end
|
#migration_data ⇒ Object
53
54
55
56
57
58
|
# File 'lib/generators/active_record/check_permission_generator.rb', line 53
def migration_data
<<RUBY
t.string :email
t.string :name
RUBY
end
|