【问题标题】:How to remove whitespace from Model attributes?如何从模型属性中删除空格?
【发布时间】:2011-12-26 05:01:22
【问题描述】:

确保模型从字符串值中修剪前导和尾随空格的最简单方法是什么。

一个不方便的方法似乎是 before_save 过滤器——尽管对于像从字符串中删除空格这样常见的事情,也许有一些配置可以做到这一点?

【问题讨论】:

标签: ruby-on-rails ruby trim spaces strip


【解决方案1】:

没有内置的全局/配置设置,因为您不想总是这样做,所以最好根据您描述的具体情况并在前过滤器中使用strip(field) .有一个可用的宝石,但正如 Jacob 所详述的那样。

我还建议在对用户值进行任何操作时要小心。一个常见的最佳实践是保存用户键入的“任何内容”,“所有内容”(好吧,在这种情况下为空格)。然后根据需要在内部进行操作并格式化显示。
这里的主要推理是,当用户重新编辑他们的信息时,最好给他们“他们之前输入的确切内容”,而不是陷入最终可能成为复杂验证和非常脆弱的用户界面的事情中。

另一个旁注,确保使用“数据适当”字段,例如不要将日期存储在字符串中,这是自找麻烦。

【讨论】:

    【解决方案2】:

    使用strip_attributes gem:

    https://github.com/rmm5t/strip_attributes

    【讨论】:

      【解决方案3】:

      我只需要一个在验证之前运行的过滤器,并通过所有参数来修剪它们。如果你把它放在你的基本控制器类上,你只需设置它并忘记它。

      【讨论】:

        【解决方案4】:

        确实,这也让我有点恼火——所以我写了这个

        https://github.com/omarqureshi/AR-stripper

        迟早会将此作为 gem 发布,但在此期间只是

        gem 'stripper', :git => "git@github.com:omarqureshi/AR-stripper.git"
        

        在你的 Gemfile 中就可以了

        【讨论】:

          【解决方案5】:

          您也可以使用回调来去除空白而不使用 gem。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-12-22
            • 2021-08-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-10-29
            • 1970-01-01
            相关资源
            最近更新 更多