如何拦截ActiveRecord对象的质量分配哈希并对其进行过滤?

时间:2011-01-28 20:45:17

标签: ruby-on-rails activerecord

假设我有一个带有整数字段Person的记录类awesomeness

如果我拨打Person.new(:awesomeness => 5),则可以正常使用。

如果按预期调用Person.new(:awesomeness => 'five'),Rails会下注以确定'five'是一个整数并失败,所以它默认为0。我可以通过以某种方式拦截哈希和对数据的烦躁来进行干预吗?

ActiveRecord回调中最早的“事件”是before_save,“5”已成为0

我显然可以做这个控制器端,但这似乎是模型中严格属于过滤器的东西。

1 个答案:

答案 0 :(得分:2)

我会说这实际上属于控制器。

控制器的工作是解释模型和视图之间的数据和交互。如果模型将字段声明为整数,则只需要模型逻辑来处理以整数形式给出的数据。

我假设这个“五”来自视图,在这种情况下,应该是控制器的工作来正确处理数据,以便模型能够理解它。