Module: ViewMapper::BelongsToParentModels
- Included in:
- BelongsToAutoCompleteView, BelongsToView, HasManyExistingView
- Defined in:
- lib/view_mapper/belongs_to_parent_models.rb
Instance Method Summary collapse
- #add_model_actions(m) ⇒ Object
- #field_for(parent_model) ⇒ Object
- #find_parent_models ⇒ Object
- #is_model_dependency_action(action) ⇒ Object
- #model_info_from_param(param) ⇒ Object
- #parent_models ⇒ Object
- #validate_parent_model(parent_model, child_model_name, child_model, check_setter_method = false) ⇒ Object
- #validate_parent_models ⇒ Object
- #virtual_attribute_for(parent_model) ⇒ Object
- #virtual_attribute_setter_for(parent_model) ⇒ Object
Instance Method Details
#add_model_actions(m) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 4 def add_model_actions(m) m.directory(File.join('test/fixtures', class_path)) m.template 'model.erb', File.join('app/models', class_path, "#{file_name}.rb") m.template 'unit_test.rb', File.join('test/unit', class_path, "#{file_name}_test.rb") unless [:skip_fixture] m.template 'fixtures.yml', File.join('test/fixtures', "#{table_name}.yml") end unless [:skip_migration] m.migration_template 'migration.rb', 'db/migrate', :assigns => { :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}" }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}" end end |
#field_for(parent_model) ⇒ Object
91 92 93 94 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 91 def field_for(parent_model) name = parent_fields[parent_model.name] name ? name : 'name' end |
#find_parent_models ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 27 def find_parent_models if view_param view_param.split(',').collect do |param| model_info_from_param(param) end elsif view_only? model.parent_models else [] end end |
#is_model_dependency_action(action) ⇒ Object
19 20 21 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 19 def is_model_dependency_action(action) action[0] == :dependency && action[1].include?('model') end |
#model_info_from_param(param) ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 39 def model_info_from_param(param) if /(.*)\[(.*)\]/.match(param) parent_model = ModelInfo.new($1.singularize) select_parent_by parent_model, $2 else parent_model = ModelInfo.new(param.singularize) end parent_model end |
#parent_models ⇒ Object
23 24 25 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 23 def parent_models @parent_models ||= find_parent_models end |
#validate_parent_model(parent_model, child_model_name, child_model, check_setter_method = false) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 64 def validate_parent_model(parent_model, child_model_name, child_model, check_setter_method = false) parent_model_name = parent_model.name if !parent_model.valid? logger.error parent_model.error return false elsif child_model && !child_model.belongs_to?(parent_model_name) logger.warning "Model #{child_model.name} does not belong to model #{parent_model_name}." return false elsif child_model && !child_model.has_method?(virtual_attribute_for(parent_model)) logger.warning "Model #{child_model.name} does not have a method #{virtual_attribute_for(parent_model)}." return false elsif child_model && check_setter_method && !child_model.has_method?(virtual_attribute_setter_for(parent_model)) logger.warning "Model #{child_model.name} does not have a method #{virtual_attribute_setter_for(parent_model)}." return false elsif child_model && !child_model.has_foreign_key_for?(parent_model_name) logger.warning "Model #{child_model.name} does not contain a foreign key for #{parent_model_name}." return false elsif !parent_model.has_many?(child_model_name.pluralize) logger.warning "Model #{parent_model_name} does not contain a has_many association for #{child_model_name}." return false elsif !parent_model.has_method?(field_for(parent_model)) && !parent_model.has_column?(field_for(parent_model)) logger.warning "Model #{parent_model_name} does not have a #{field_for(parent_model)} attribute." return false end true end |
#validate_parent_models ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 49 def validate_parent_models parents = parent_models if parents.empty? if view_only? logger.error "No belongs_to associations exist in class #{model.name}." else logger.error "No belongs_to association specified." end return false end parents.reject! { |parent_model| !validate_parent_model(parent_model, class_name, view_only? ? model : nil) } @parent_models = parents !parents.empty? end |
#virtual_attribute_for(parent_model) ⇒ Object
96 97 98 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 96 def virtual_attribute_for(parent_model) "#{parent_model.name.underscore}_#{field_for(parent_model)}" end |
#virtual_attribute_setter_for(parent_model) ⇒ Object
100 101 102 |
# File 'lib/view_mapper/belongs_to_parent_models.rb', line 100 def virtual_attribute_setter_for(parent_model) "#{virtual_attribute_for(parent_model)}=" end |