0

我有一个 ActiveRecord 模型,其中包含一个序列化字段,该字段由一个自定义非 ActiveRecord 模型(一个简单的类,具有几个属性)的数组组成。

我试图找出一种方法将每个序列化项目的填充和验证与父模型集成在一起,但找不到这样做的优雅方法。

序列化模型“initialize”方法接收“attributes”哈希,并简单地用这些填充类属性。这很好,除了从表单接收数据时,数据作为字符串数据而不是实际类型接收。ActiveRecord 模型知道如何处理这个问题,并在模型实例保存到数据库之前根据 Schema 进行类型转换。我能做些什么(除了在“初始化”方法中进行类型转换)来使行为类似于 AR 模型吗?

此外,我正在尝试使用“Validatable”gem 来验证我的 NON AR 模型,但似乎有些验证无法在那里定义,例如使用“validates_numericality_of”并定义数字大于 0 时。

有一个“if”参数可以传递给它,但它发生在数值检查之前,然后在执行时发生:

validates_numericality_of :price, :if => lambda { self.price >= 0.0 }, :message => "Price must be greater or equal to 0"

如果我在“价格”字段中输入了一个字符串,当我尝试检查模型是否有效时,我会抛出一个异常,因为“价格”是一个字符串,我正在尝试将它与一个数字进行比较......

希望没关系我在一个线程中问了两个问题......但它们有点相关。

谢谢

4

1 回答 1

0

你试过self.price.to_i吗?

于 2012-05-09T15:13:25.150 回答