Sha256: 2e215fca90a914bd98c5aaa8cab18628417414639def53ac84e82cc4d1f0632e

Contents?: true

Size: 1.52 KB

Versions: 3

Compression:

Stored size: 1.52 KB

Contents

require 'active_support/inflector'
require 'logging_assist'

include Log4r

class ModelGenerator < Rails::Generators::NamedBase  
  desc "Adds Canable::Ables permission system to Model" 

  # argument :name, :type => :string, :default => 'User', :desc => 'Name of model to make Canable:Able', :required => false

  # class_option :user_stamps, :type => :boolean, :default => false 
  
    
  def make_canable_able  
    begin
      logger.debug "make_canable_able: #{name}"
      insert_into_model name do
        canable_include_txt
      end
    rescue
      say "model #{name} does not exist. Please create it first before you can make it Canable:Able", :red
    end
  end

  def post_log
    say "Your model #{name.to_s.camelize} is now Canable:Able. Please define your permissions in the model", :green
  end

  protected

  include RailsAssist::BasicLogger
  
  extend RailsAssist::UseMacro
  use_orm   :mongoid
  # use_helper :model

  def canable_include_txt
    %Q{
  include Canable::Ables
  #{add_userstamps}

  # permission logic
  #{add_methods}
}
  end

  def add_userstamps 
    "userstamps! # adds creator and updater\n" # if options[:userstamps]
  end

  def add_methods
    methods = []
    %w{creatable destroyable updatable viewable}.each do |name|
      # if !has_method?(name)
        method = add_method(name)
        methods << method if method
      # end
    end
    methods.join("\n  ")
  end

  def add_method(name)        
    #if options[name.to_sym]
    %Q{
  def #{name}_by?(user)
    true
  end}     
    #end
  end      
end 

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
generator-spec-0.7.8 spec/generator_spec/fixtures/generators/model/model_generator.rb
generator-spec-0.7.6 spec/generator_spec/fixtures/generators/model/model_generator.rb
generator-spec-0.7.5 spec/generator_spec/fixtures/generators/model/model_generator.rb