我有一个带有价格字段的预订模型。我选择了整数数据类型来存储以便士为单位的价格,并在我的 Booking 模型中调用 before_create 将用户输入的英镑价格转换为便士:
before_create { self.price = price * 100 } #convert to pence
但是,我在终端中注意到,如果我在表单上输入一个十进制数(例如 22.75),它将作为 2200 而不是 2275 输入到我的模型中。
我认为这是因为价格字段是一个整数,所以它会在将转换应用于便士之前将 22.75 转换为 22。
你认为我应该在我的控制器中解决这个问题还是模型是正确的方法?
编辑我决定使用 DECIMAL 而不是 INTEGER 来避免潜在的头痛。关于这个话题有很多争论,但大多数人似乎都推荐 DECIMAL。谢谢大家的建议。