在db中始终使字段为小写的简单方法

目前我正在模型中执行以下操作:

before_save :to_lower before_create :to_lower def to_lower self.name = self.name.downcase end 

对我来说似乎很重复。

如果已经有before_save,则不需要before_create。

 before_save { |user| user.name = user.name.downcase } 

我通常通过以下方式处理此类案

 def name= name super(name.try(:downcase)) end 
 def name=(val) write_attribute(:name, val.downcase) end 

你为什么做这个? 如果要执行不区分大小写的搜索,您可能只想将其放入查询逻辑中(实际上,我认为Rails已经做了一些)。 但是,如果你真的希望在DB中将数据规范化为小写(例如,如果你正在处理SHA1哈希或其他东西),那么你做的是正确的。