aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorTeddy Wing2017-09-19 18:13:20 +0200
committerTeddy Wing2017-09-19 18:13:20 +0200
commita60bf813aa118648998093242d6db0e1d8613e76 (patch)
treea75b5ed5275f12515dc2e9ddf1a519c21b34588d /lib
parentc9a997f337c9b45f62b50629de96fa95f20c1a7f (diff)
downloadchouette-core-a60bf813aa118648998093242d6db0e1d8613e76.tar.bz2
ModelAttribute: Add `.methods_by_class` method
Allows us to get all `ModelAttribute`s given a certain class name. Needed an `#==` method to be able to test object equality more easily so I added one in. I don't like that the `klass` is a lowercase symbol and the `klass` attribute to `.methods_by_class` is a constantized string. Want to correct that and make them uniform. Only did it this way because that's how it was suggested in the ticket. Refs #4401
Diffstat (limited to 'lib')
-rw-r--r--lib/model_attribute.rb12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/model_attribute.rb b/lib/model_attribute.rb
index 98bb54b67..8f1ecabed 100644
--- a/lib/model_attribute.rb
+++ b/lib/model_attribute.rb
@@ -9,6 +9,12 @@ class ModelAttribute
all << new(klass, name, data_type)
end
+ def self.methods_by_class(klass)
+ all.select do |model_attr|
+ model_attr.klass == klass.downcase.to_sym
+ end
+ end
+
def initialize(klass, name, data_type)
@klass = klass
@name = name
@@ -59,4 +65,10 @@ class ModelAttribute
def code
"#{@klass}##{@name}"
end
+
+ def ==(other)
+ klass == other.klass &&
+ name == other.name &&
+ data_type == other.data_type
+ end
end