Class: GettextColumnMapping::ModelAttributesFinder

Inherits:
Object
  • Object
show all
Defined in:
lib/gettext_column_mapping/model_attributes_finder.rb

Instance Method Summary collapse

Constructor Details

#initializeModelAttributesFinder

Returns a new instance of ModelAttributesFinder.



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/gettext_column_mapping/model_attributes_finder.rb', line 91

def initialize
  return unless Object.const_defined?(:Rails)
  # HOOK ... HOOK wow ... berk
  # Is it safe ?
  $rails_rake_task = false
  # Eager load all classes !! In order to load all ActiveRecord::Base

  # Rails 3.x power
  if Rails::VERSION::MAJOR > 2
    Rails.application.eager_load!
  else
    Rails::Initializer.run(:load_application_classes,Rails.configuration) do |config|
      config.cache_classes = true
    end
  end

end

Instance Method Details

#column_ignored?(subclass, column, patterns) ⇒ Boolean

Returns:

  • (Boolean)


132
133
134
# File 'lib/gettext_column_mapping/model_attributes_finder.rb', line 132

def column_ignored?(subclass,column,patterns)
  ignored?(column.name,patterns) || subclass.untranslate?(column.name)
end

#find(options) ⇒ Object

options:

:ignore_tables => ['cars',/_settings$/,...]
:ignore_columns => ['id',/_id$/,...]

current connection —> href="'model_name','type'">cars’=>,…



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/gettext_column_mapping/model_attributes_finder.rb', line 112

def find(options)
  found = Hash.new([])

  GettextColumnMapping.activerecord_subclasses.each do |subclass|
    next if table_ignored?(subclass,options[:ignore_tables])
    found[subclass] = [] if GettextColumnMapping.config.use_parent_level && ! GettextColumnMapping::ParentLevel.column_attributes_translation(subclass.name).blank?
    subclass.columns.each do |column|
      unless column_ignored?(subclass,column,options[:ignore_columns])
        found[subclass] += [column.name]
      end
    end
  end

  found
end

#ignored?(name, patterns) ⇒ Boolean

Returns:

  • (Boolean)


136
137
138
139
# File 'lib/gettext_column_mapping/model_attributes_finder.rb', line 136

def ignored?(name,patterns)
  return false unless patterns
  patterns.detect{|p| (p.is_a?(Regexp) && name=~p) || (p.to_s == name.to_s)}
end

#table_ignored?(subclass, patterns) ⇒ Boolean

Returns:

  • (Boolean)


128
129
130
# File 'lib/gettext_column_mapping/model_attributes_finder.rb', line 128

def table_ignored?(subclass, patterns)
  ignored?(subclass.table_name,patterns) || subclass.untranslate_all? || !subclass.table_exists?
end