before_save,剥离一个字符串
Posted
技术标签:
【中文标题】before_save,剥离一个字符串【英文标题】:before_save, strip a string 【发布时间】:2014-01-28 09:09:23 【问题描述】:我正在尝试在我的用户模型中 strip
变量 Username
的空格。
我正在使用
before_save do
self.username.strip!
end
但它似乎不起作用,我错过了什么吗?
【问题讨论】:
你错过了作业self.username = self.username.strip!
@Hitham S. AlQadheeb,不需要分配。使用strip!
已经这样做了。
哦,谢谢指正。
【参考方案1】:
你宁愿更新 setter 而不是用回调污染你的模型:
def username=(value)
self[:username] = value.to_s.strip
end
顺便说一句,我更喜欢squish
【讨论】:
感谢您的回答,它工作得很好。你能解释一下为什么你更喜欢squish而不是strip吗? squish 删除所有愚蠢的空白,strip 只删除前导和尾随 听起来很酷,所以我替换 value.to_s.strip => value.to_s.squish 对吧? @daniel 这是为了避免nil
的可能性
如果是 ActiveRecord,请使用super(value.to_s.strip)
而不是self[:attr] = value.to_s.strip
【参考方案2】:
如果您想删除仅前导和尾随空格,您可以使用 .strip!
但正如你所说:
我正在尝试删除我的变量 Username 的空格 用户模型。
我认为实际上你想删除所有空格以下应该这样做:
.gsub(/\s+/, "")
编辑:
哦对了,你也可以使用Rail的内置方法squish()
感谢 apneadiving 的提醒
【讨论】:
以上是关于before_save,剥离一个字符串的主要内容,如果未能解决你的问题,请参考以下文章