Ich habe das folgende ModulRuby on Rails - Teilen ein Verfahren mit zwei Modellen
module SharedMethods
# Class method
module ClassMethods
#
# Remove white space from end of strings
def remove_whitespace
self.attributes.each do |key,value|
if value.kind_of?(String) && !value.blank?
write_attribute key, value.strip
end
end
end
end
#
#
def self.included(base)
base.extend(ClassMethods)
end
end
und ich verwende es in meinen Modellen wie
include SharedMethods
before_validation :remove_whitespace
Allerdings, wenn ich das Formular abzuschicken ich bekommen "undefined Methode` remove_whitespace '"Nachricht
Was kann ich tun, um diesen Fehler zu beheben?
Es wird andere Methoden sein in dieses Modul so möchte mit bleiben tun die oben self.included jetzt mit diesen Fehler private Methode Würfen '‚gehören für # genannt /Users/andy/rails_apps/test_app/vendor/rails/activerecord/lib/active_record/base.rb: 1964: in 'metho d_missing ' /Users/andy/rails_apps/test_app/lib/shared_methods.rb:7:in 'enthalten' –
Privater Fehler kommt von base.include. Der direkteste Weg ist die Arbeit mit send: 'base .__ send __ (: include, InstanceMethods)' –
Sie haben Recht. Sie sollten entweder send (: include, Module) oder class_eval {include Module} verwenden. –