作者tonytonyjan (南洋大兜虫)
看板Ruby
标题[问题] Rails: Modify data before saveing
时间Tue Jan 10 18:53:59 2012
环境:
Ruby 1.9.3p0
Rails 3.2.0.rc1
状况:
这个问题最常见的范例就是将资料转成大小写
例如我想储存 "TONYTONYJAN" 到某个 model 的某个 column(string)
但是实际储存会变成 "tonytonyjan"
我想到三个解法:
1. override assign method
例如:
class User < ActiveRecord::Base
def username=(val)
write_attribute(:username, val.downcase)
end
end
2. 使用 Observer
3. 实做 before_save
我想请教各位前辈:
a. 如果是你们,会使用什麽方法来解决这个问题?
b. 推荐什麽方法和不推荐什麽方法
c. 是否有其他更好得解法?
不吝赐教
万分感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.246.1
1F:推 godfat:我会用 before_save 01/10 21:05
2F:→ ayamomiji:我是用 before_validation, 因为还蛮常做 strip 这种会 01/14 01:04
3F:→ ayamomiji:改变字串长度影响 validates_length_of 的这类事情 01/14 01:04