diff --git a/lib/global_id/global_id.rb b/lib/global_id/global_id.rb index 5426613..1082326 100644 --- a/lib/global_id/global_id.rb +++ b/lib/global_id/global_id.rb @@ -53,11 +53,10 @@ def model_class @model_class ||= begin model = model_name.constantize - unless model <= GlobalID - model - else + if model <= GlobalID raise ArgumentError, "GlobalID and SignedGlobalID cannot be used as model_class." end + model end end diff --git a/lib/global_id/locator.rb b/lib/global_id/locator.rb index 89e0267..71687a3 100644 --- a/lib/global_id/locator.rb +++ b/lib/global_id/locator.rb @@ -128,7 +128,7 @@ def normalize_app(app) class BaseLocator def locate(gid) - return unless model_id_is_valid(gid) + return unless model_id_is_valid?(gid) gid.model_class.find gid.model_id end @@ -136,7 +136,7 @@ def locate_many(gids, options = {}) ids_by_model = Hash.new { |hash, key| hash[key] = [] } gids.each do |gid| - next unless model_id_is_valid(gid) + next unless model_id_is_valid?(gid) ids_by_model[gid.model_class] << gid.model_id end @@ -165,7 +165,7 @@ def find_records(model_class, ids, options) end private - def model_id_is_valid(gid) + def model_id_is_valid?(gid) primary_key = Array(gid.model_class.primary_key) primary_key_size = primary_key.size diff --git a/lib/global_id/uri/gid.rb b/lib/global_id/uri/gid.rb index cf5c207..20a22a7 100644 --- a/lib/global_id/uri/gid.rb +++ b/lib/global_id/uri/gid.rb @@ -158,11 +158,14 @@ def set_model_components(path, validate = false) @model_name = model_name if model_id - model_id_parts = model_id.split(COMPOSITE_MODEL_ID_DELIMITER, COMPOSITE_MODEL_ID_MAX_SIZE) - model_id_parts.reject!(&:blank?) - model_id_parts.each { |id| validate_model_id(id) } - - model_id_parts.map! { |id| CGI.unescape(id) } + model_id_parts = model_id + .split(COMPOSITE_MODEL_ID_DELIMITER, COMPOSITE_MODEL_ID_MAX_SIZE) + .reject(&:blank?) + + model_id_parts.map! do |id| + validate_model_id(id) + CGI.unescape(id) + end @model_id = model_id_parts.length == 1 ? model_id_parts.first : model_id_parts end