,字符串数据清理我在数据库表中有一个名为dollars
一个整数列,我试图保存的值,如在数据库中$1000
。但是,试图将美元符号字符串$1000
保存在整数列中将导致自动转换为整数0
。在数据库中保存的整数
为了防止发生这种情况,我尝试在我的模型中添加一个before_save
回调到我的clean_data
方法中以删除美元符号。但似乎在调用clean_data
之前,rails已经试图将整个$1000
字符串保存在数据库中。
我不知道是否有更好的方式保存到数据库作为整数事先取出值美元符号?
这里是我的代码:
在bids_controller.rb
的create
行动,这样做将使数据库无法正常形式保存价值$1000
:
# Remove dollar sign
if params[:bid][:dollars][0] == "$"
params[:bid][:dollars] = params[:bid][:dollars].delete('$')
end
@bid = Bid.new(params[:bid])
@bid.save
但是,如果我要删除来自控制器的if-end片段并清除Bid
型号中的数据,如下所示:
before_save :clean_data
def clean_data
puts self.dollars
self.dollars = self.dollars.delete('$')
end
在clean_data
方法有机会删除美元符号之前,我将获得值为0
的puts self.dollars
。
我的假设是轨道试图要么clean_data
或save
之前为“持有”,在数据库中的数据被调用,而这个“持有”导致自整列不能够将数据转换为0
保存美元符号。
非常感谢您的帮助! :)
请出示在这个问题你的代码,因为它听起来就像你做的很好。 – lucapette
嗨,我只是更新我的问题,包括代码。感谢您的帮助! –
@MingC你找到解决方案吗?的 – Luccas