我正在试验很棒的 Sinatra 环境来实现一个 json API 服务器,该服务器从“遗留”数据库(一个现有的数据库,已经在生产中)访问数据。
我正在使用 sinatra-activerecord gem 来访问我的数据。就像在 Sinatra 应用程序中包含简单的 decalration 一样简单:
class Exam < ActiveRecord::Base
end
我也喜欢 tux(相当于 rails 控制台)来查询我的模型(表)。
现在,在通过 API 调用插入新记录的情况下,我对下面解释的两种不同场景有架构上的疑问(假设是 POST 客户端请求创建/更新记录):
场景 1. 作为(我的)Rails 项目的一部分的现有数据库,已经在生产中
假设我的生产数据库(postgresql 实例)是我自己开发的 Rails 项目的一部分,所以我的 Activerecord 模型 .rb 代码包含相当复杂的验证方法;例如,上面提到的模型exam.rb由一千行一些复杂的正则表达式验证方法组成......
在那种情况下,避免模型源代码重复(以及可能的不匹配错误)的最佳技术解决方案是什么?我必须在 Sinatra 应用程序中做一个 OS 符号链接到原始 Rails 模型exam.rb ...?
场景2.别人开发的现有DB
所以假设我可以访问数据库表,但我没有任何关于应用数据“验证”的源代码(可能是用 Java 开发的,或者由于某些原因我无法访问的任何代码......)
在那种情况下,我认为方法是在 ruby-activerecord 中重写验证;正确的 ?
对不起我的长帖
giorgio about.me/solyaris