Sha256: d453d1346a46d0f93b131199b14d2d76a49b6a79f76e2988e032629fd301ac12

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

require 'rails/generators/active_record'
require 'active_support/core_ext'

module ActiveRecord
  module Generators
    class RolifyGenerator < ActiveRecord::Generators::Base
      source_root File.expand_path("../templates", __FILE__)
      
      argument :user_cname, :type => :string, :default => "User", :banner => "User"
      
      def generate_model
        invoke "active_record:model", [ name ], :migration => false
      end
      
      def inject_role_class
        inject_into_class(model_path, class_name, model_content)
      end
      
      def copy_rolify_migration
        migration_template "migration.rb", "db/migrate/rolify_create_#{table_name}"
      end
      
      def join_table
        user_cname.constantize.table_name + "_" + table_name
      end
      
      def user_reference
        user_cname.demodulize.underscore
      end
      
      def role_reference
        class_name.demodulize.underscore
      end
      
      def model_path
        File.join("app", "models", "#{file_path}.rb")
      end
      
      def model_content
        content = <<RUBY
  has_and_belongs_to_many :%{user_cname}, :join_table => :%{join_table}
  belongs_to :resource, :polymorphic => true
  
  scopify
RUBY
        content % { :user_cname => user_cname.constantize.table_name, :join_table => "#{user_cname.constantize.table_name}_#{table_name}"}
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
rolify-3.4.0 lib/generators/active_record/rolify_generator.rb
rolify-3.3.0 lib/generators/active_record/rolify_generator.rb
third-prestige-rolify-3.3.0.rc5 lib/generators/active_record/rolify_generator.rb
rolify-3.3.0.rc4 lib/generators/active_record/rolify_generator.rb
rolify-3.3.0.rc3 lib/generators/active_record/rolify_generator.rb