令我感到惊讶的是,我强行显示Decimal
值的问题的解决方案是DataGridView
,DataTable
上的数据绑定到DataRow newRow = this.MenuDataTable.NewRow();
newRow["Price"] = menuItem.Price.ToString("0.00");
的数据是:
Price
虽然Decimal
列本身设置为string
类型(并且解决方案中的插入对象是DataRow
)。就在那时,我注意到对象Object
接受任何DataTable
类型,原因显而易见,我最初没有想过。
我现在的困境是"这样做真的很安全吗?"。我实际上在将数据插入 if (!decimal.TryParse(this.Price, out outDecimal))
{
throw new InvalidUserValuesException("Price must be a number");
}
if (outDecimal < 0)
{
throw new InvalidUserValuesException("Price must be a positive number");
}
if (Decimal.Round(outDecimal, 2) != outDecimal)
{
throw new InvalidUserValuesException("Price must only have two decimal places");
}
if (this.Price.Length > 10)
{
throw new InvalidUserValuesException("Price must not exceed 10 characters");
}
之前先验证了数据,如下所示:
validates_uniqueness_of :student_id, scope: [:lightbulb_id]
相信答案简单明了,我只想减轻自己对将来申请爆炸的恐惧。