:strip_whitespaces
このようなRailsモデルで呼び出されるbefore_saveフィルターがあります
before_save :strip_whitespaces
フィルターは、次のstrip_whitespaces
方法で定義されるプライベート メソッドです。
private
def strip_whitespaces
self.name = name.split.join(" ") if attribute_present?("name")
self.description = description.split.join(" ") if attribute_present?("description")
self.aliases = aliases.split.join(" ") if attribute_present?("aliases")
end
ruby の send メソッドを使用してこのメソッドを DRY-er にするにはどうすればよいですか? これは、このフィルターにさらにフィールドを追加する必要がある場合にも役立ちます。
このようなことを念頭に置いていましたが、うまくいきません
%W[name description aliases].each do |attr|
self.send(attr) = self.send(attr).split.join(" ") if attribute_present?(attr)
end