Sha256: ee6260d91599f76af241eca6564d1fa67f57180e41ae7112991750c1c566e7c5

Contents?: true

Size: 1.34 KB

Versions: 19

Compression:

Stored size: 1.34 KB

Contents

require 'generators/hobo_support/eval_template'

module Generators
  module HoboSupport
    Model = classy_module do
      include EvalTemplate

      argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"

      def self.banner
      "rails generate hobo:model #{self.arguments.map(&:usage).join(' ')} [options]"
      end

      class_option :timestamps, :type => :boolean

      def generate_model
        invoke "active_record:model", [name], {:migration => false}.merge(options)
      end

      def inject_hobo_code_into_model_file
        gsub_file(model_path, /  # attr_accessible :title, :body\n/m, "")
        inject_into_class model_path, class_name do
          eval_template('model_injection.rb.erb')
        end
      end

      protected

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

      def max_attribute_length
        attributes.*.name.*.length.max
      end

      def field_attributes
        attributes.reject { |a| a.name == "bt" || a.name == "hm" }
      end

      def accessible_attributes
        field_attributes.*.name + bts.map {|bt| "#{bt}_id"} + bts + hms
      end

      def hms
        attributes.select { |a| a.name == "hm" }.*.type
      end

      def bts
        attributes.select { |a| a.name == "bt" }.*.type
      end

    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
hobo_support-2.2.6 lib/generators/hobo_support/model.rb
hobo_support-2.2.5 lib/generators/hobo_support/model.rb
hobo_support-2.2.4 lib/generators/hobo_support/model.rb
hobo_support-2.2.3 lib/generators/hobo_support/model.rb
hobo_support-2.2.2 lib/generators/hobo_support/model.rb
hobo_support-2.2.1 lib/generators/hobo_support/model.rb
hobo_support-2.2.0 lib/generators/hobo_support/model.rb
hobo_support-2.1.2 lib/generators/hobo_support/model.rb
hobo_support-2.1.1 lib/generators/hobo_support/model.rb
hobo_support-2.1.0 lib/generators/hobo_support/model.rb
hobo_support-2.1.0.pre4 lib/generators/hobo_support/model.rb
hobo_support-2.1.0.pre3 lib/generators/hobo_support/model.rb
hobo_support-2.1.0.pre2 lib/generators/hobo_support/model.rb
hobo_support-2.1.0.pre1 lib/generators/hobo_support/model.rb
hobo_support-2.0.1 lib/generators/hobo_support/model.rb
hobo_support-2.0.0 lib/generators/hobo_support/model.rb
hobo_support-2.0.0.pre10 lib/generators/hobo_support/model.rb
hobo_support-2.0.0.pre9 lib/generators/hobo_support/model.rb
hobo_support-2.0.0.pre8 lib/generators/hobo_support/model.rb