Skip to content

Commit

Permalink
Merge pull request #62 from dmitrypol/master
Browse files Browse the repository at this point in the history
Restricting the list of possible mapping_key values for a model
  • Loading branch information
monkbroc committed Mar 6, 2016
2 parents fb769ec + 4f9cd70 commit df0b642
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 6 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -5,3 +5,4 @@ log/*.log
pkg/
spec/dummy_app/log
.idea/
*.gem
2 changes: 1 addition & 1 deletion app/views/rails_admin/main/import.html.haml
Expand Up @@ -52,7 +52,7 @@
= t("admin.import.mapping")
.col-sm-10.controls
= select_tag "associations[#{field.name}]",
options_for_select(@import_model.associated_model_fields(field).map(&:name),
options_for_select(@import_model.associated_model_fields(field),
@import_model.associated_config(field).mapping_key.to_s), data: { enumeration: true }

%br
Expand Down
6 changes: 5 additions & 1 deletion lib/rails_admin_import/config/sections/import.rb
Expand Up @@ -9,8 +9,12 @@ class Import < RailsAdmin::Config::Sections::Base
:name
end

register_instance_option(:mapping_key_list) do
[]
end

register_instance_option(:default_excluded_fields) do
[:id, :_id, :created_at, :updated_at]
[:id, :_id, :created_at, :updated_at, :c_at, :u_at]
end
end
end
Expand Down
16 changes: 12 additions & 4 deletions lib/rails_admin_import/import_model.rb
Expand Up @@ -63,7 +63,11 @@ def many_association_fields
end

def update_lookup_field_names
@update_lookup_field_names ||= model_fields.map(&:name) + belongs_to_fields.map(&:foreign_key)
if @config.mapping_key_list.present?
@update_lookup_field_names = @config.mapping_key_list
else
@update_lookup_field_names ||= model_fields.map(&:name) + belongs_to_fields.map(&:foreign_key)
end
end

def associated_object(field, mapping_field, value)
Expand All @@ -82,9 +86,13 @@ def associated_config(field)

def associated_model_fields(field)
@associated_fields ||= {}
@associated_fields[field] ||= associated_config(field).visible_fields.select { |f|
!f.association?
}
if associated_config(field).mapping_key_list.present?
@associated_fields[field] ||= associated_config(field).mapping_key_list
else
@associated_fields[field] ||= associated_config(field).visible_fields.select { |f|
!f.association?
}.map(&:name)
end
end

def has_multiple_values?(field_name)
Expand Down

0 comments on commit df0b642

Please sign in to comment.