我有一个: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 方法使此方法干燥?一旦我必须向此过滤器添加更多字段,这也会有所帮助。
我有这样的想法,但它不起作用
%W[name description aliases].each do |attr|
self.send(attr) = self.send(attr).split.join(" ") if attribute_present?(attr)
end