X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/287a99b59415dfad11034057fd608b38d1355512..9b98829c565a2aa487d21ecd7f9429c23d0cec20:/services/api/app/models/arvados_model.rb?ds=inline diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb index 0f45f35406..c663d21d52 100644 --- a/services/api/app/models/arvados_model.rb +++ b/services/api/app/models/arvados_model.rb @@ -104,6 +104,10 @@ class ArvadosModel < ActiveRecord::Base api_column_map end + def self.ignored_select_attributes + ["href", "kind", "etag"] + end + def self.columns_for_attributes(select_attributes) if select_attributes.empty? raise ArgumentError.new("Attribute selection list cannot be empty") @@ -111,13 +115,13 @@ class ArvadosModel < ActiveRecord::Base api_column_map = attributes_required_columns invalid_attrs = [] select_attributes.each do |s| - next if ["href", "kind", "etag"].include? s + next if ignored_select_attributes.include? s if not s.is_a? String or not api_column_map.include? s invalid_attrs << s end end if not invalid_attrs.empty? - raise ArgumentError.new("Invalid attribute(s): '#{invalid_attrs.inspect}'") + raise ArgumentError.new("Invalid attribute(s): #{invalid_attrs.inspect}") end # Given an array of attribute names to select, return an array of column # names that must be fetched from the database to satisfy the request. @@ -239,7 +243,7 @@ class ArvadosModel < ActiveRecord::Base end def logged_attributes - attributes + attributes.except *Rails.configuration.unlogged_attributes end def self.full_text_searchable_columns @@ -404,15 +408,16 @@ class ArvadosModel < ActiveRecord::Base x.each do |k,v| return true if has_symbols?(k) or has_symbols?(v) end - false elsif x.is_a? Array x.each do |k| return true if has_symbols?(k) end - false - else - (x.class == Symbol) + elsif x.is_a? Symbol + return true + elsif x.is_a? String + return true if x.start_with?(':') && !x.start_with?('::') end + false end def self.recursive_stringify x @@ -426,6 +431,8 @@ class ArvadosModel < ActiveRecord::Base end elsif x.is_a? Symbol x.to_s + elsif x.is_a? String and x.start_with?(':') and !x.start_with?('::') + x[1..-1] else x end