0

在 Ruby on Rails 中,每个模型实体都有一个“validate_on_something 钩子方法,该方法将在实体实际持久化到数据库之前被调用。我想要 Google App Engine 中的类似功能。我知道您可以通过在声明中向它们传递参数来对单个属性进行验证。但是,如果我希望做更多的验证,在模型类声明中是否有一些地方可以做到这一点?

同样,有时实体需要修改才能真正持久化到数据库中。我可能需要在实体实际写入数据库之前修改(转换)实体。实体类声明中是否有允许我这样做的地方?

我知道我可以将这些转换/验证放在课堂之外。但这似乎不是好的 OO 设计。看起来确实应该有一些钩子方法可以在模型中自动调用以满足这些需求。

所以我的问题是,在实体被持久化之前处理实体的验证和转换的最合适的方法是什么?

4

2 回答 2

2

最佳答案取决于您需要进行什么样的转换。模型没有通用的 pre-/post-put 方法,但还有其他几个选项:

  • 正如您所提到的,您可以将验证函数传递给 Property 类构造函数
  • 您可以使用以编程方式生成值的自定义属性类,例如这个
  • 您可以使用api call hooks修改实体,因为它们存储在最低级别。
于 2009-11-26T22:45:41.943 回答
1

您是否在原始应用引擎 API 之上使用任何类型的 Web 框架?Rails 是一个非常高级的框架。您是否研究过 Django 或任何其他 Web 框架?您可能会发现它们比原始 appengine 实体更接近轨道。

或者,如果您想要更低级别的内容,请查看有关 钩子的这篇文章

于 2009-11-26T22:36:32.663 回答