具有等于​​运算符的before_save的行为

时间:2017-07-13 08:12:16

标签: ruby-on-rails activerecord

在我的模型中,我使用before_save来大写标题的第一个字母。我尝试使用像

这样的变体

before_save { self.title[0].upcase! }根本不影响标题。

只有当我使用equals运算符时才会对标题产生任何影响。

before_save { self.title = self.title.sub(/\S/, &:upcase) }

这种行为有什么特别原因吗?

1 个答案:

答案 0 :(得分:0)

您的模型中没有title[0]的属性访问器。您将title拥有一个。因此,对title[0]进行更改不会影响title。您需要了解您的代码对字符串中的字符进行操作,而不是对字符串本身进行操作。

before_save { self.title.capitalize! }可能有用。