Class: ActiveRecord::Generators::RolifyGenerator

Inherits:
Base
  • Object
show all
Defined in:
lib/generators/active_record/rolify_generator.rb

Instance Method Summary collapse

Instance Method Details

#copy_rolify_migrationObject



28
29
30
# File 'lib/generators/active_record/rolify_generator.rb', line 28

def copy_rolify_migration
  migration_template "migration.rb", "db/migrate/rolify_create_#{table_name}.rb"
end

#generate_modelObject



11
12
13
# File 'lib/generators/active_record/rolify_generator.rb', line 11

def generate_model
  invoke "active_record:model", [ name ], :migration => false
end

#inject_role_classObject



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/generators/active_record/rolify_generator.rb', line 15

def inject_role_class
  if args[1]=="engine"
    if args[2]=="devise"
      require 'devise'
      require "#{ENGINE_ROOT}/config/initializers/devise.rb"
      require "#{ENGINE_ROOT}/app/models/#{user_cname.downcase}.rb"
    else
      require "#{ENGINE_ROOT}/app/models/#{user_cname.downcase}.rb"
    end
  end
  inject_into_class(model_path, class_name, model_content)
end

#join_tableObject



32
33
34
# File 'lib/generators/active_record/rolify_generator.rb', line 32

def join_table
  user_cname.constantize.table_name + "_" + table_name
end

#model_contentObject



48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/generators/active_record/rolify_generator.rb', line 48

def model_content
  content = <<RUBY
  has_and_belongs_to_many :%{user_cname}, :join_table => :%{join_table}
  belongs_to :resource, :polymorphic => true

  validates :resource_type,
      :inclusion => { :in => Rolify.resource_types },
      :allow_nil => true

  scopify
RUBY
  content % { :user_cname => user_cname.constantize.table_name, :join_table => "#{user_cname.constantize.table_name}_#{table_name}"}
end

#model_pathObject



44
45
46
# File 'lib/generators/active_record/rolify_generator.rb', line 44

def model_path
  File.join("app", "models", "#{file_path}.rb")
end

#role_referenceObject



40
41
42
# File 'lib/generators/active_record/rolify_generator.rb', line 40

def role_reference
  class_name.demodulize.underscore
end

#user_referenceObject



36
37
38
# File 'lib/generators/active_record/rolify_generator.rb', line 36

def user_reference
  user_cname.demodulize.underscore
end