summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authormguetlein <martin.guetlein@gmail.com>2011-05-09 14:06:48 +0200
committermguetlein <martin.guetlein@gmail.com>2011-05-09 14:06:48 +0200
commite09012e01aa865900184bee186933b11f6fa1d3f (patch)
treeed0fcc50302f127492092d3bd795904828e8d005 /lib
parent02220bab22c0ea60394b71dfba536284ada17eb8 (diff)
fix search via param functionality for validation, add corresponding unit-tests
Diffstat (limited to 'lib')
-rw-r--r--lib/ohm_util.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/lib/ohm_util.rb b/lib/ohm_util.rb
new file mode 100644
index 0000000..21d7978
--- /dev/null
+++ b/lib/ohm_util.rb
@@ -0,0 +1,39 @@
+
+module Lib
+ module OhmUtil
+
+ def self.check_params(model, params)
+ prop_names = model.attributes.collect{|p| p.to_s}
+ params.keys.each do |k|
+ key = k.to_s
+ if (key == "subjectid")
+ params.delete(k)
+ else
+ unless prop_names.include?(key)
+ key = key.from_rdf_format
+ unless prop_names.include?(key)
+ key = key+"_uri"
+ unless prop_names.include?(key)
+ key = key+"s"
+ unless prop_names.include?(key)
+ raise OpenTox::BadRequestError.new "no attribute found: '"+k.to_s+"'"
+ end
+ end
+ end
+ end
+ params[key.to_sym] = params.delete(k)
+ end
+ end
+ params
+ end
+
+ def self.find(model, filter_params)
+ if (filter_params.size==0)
+ model.all
+ else
+ model.find(check_params(model,filter_params))
+ end
+ end
+
+ end
+end \ No newline at end of file