Ruby on rails Sinatra API服务器通过Activerecord访问现有数据库:关于验证
我正在试验伟大的Sinatra环境,以实现一个JSONAPI服务器,该服务器可以访问“遗留”数据库中的数据(一个现有的数据库,已经在生产中) 我命令sinatra activerecord gem访问我的数据。简单到包括在Sinatra应用程序中,简单的贴花:Ruby on rails Sinatra API服务器通过Activerecord访问现有数据库:关于验证,ruby-on-rails,database,activerecord,sinatra,sinatra-activerecord,Ruby On Rails,Database,Activerecord,Sinatra,Sinatra Activerecord,我正在试验伟大的Sinatra环境,以实现一个JSONAPI服务器,该服务器可以访问“遗留”数据库中的数据(一个现有的数据库,已经在生产中) 我命令sinatra activerecord gem访问我的数据。简单到包括在Sinatra应用程序中,简单的贴花: class Exam < ActiveRecord::Base end 课堂考试
class Exam < ActiveRecord::Base
end
课堂考试
我正在使用tux(rails控制台的等价物)来查询我的模型(表)
现在,在通过API调用插入新记录的情况下,我对下面解释的两种不同场景有一个架构上的疑问(比如说,创建/更新记录的POST客户端请求):
情景1。现有数据库作为(我的)Rails项目的一部分,已投入生产
假设我的生产数据库(postgresql实例)是我自己开发的Rails项目的一部分,所以我有我的Activerecord Models.rb代码,其中包含相当复杂的验证方法;通过示例,上面提到的模型exam.rb由一些复杂的正则表达式验证方法的上千行组成
在这种情况下,避免模型源代码重复(以及可能出现的不匹配错误)的最佳技术解决方案是什么?我必须在Sinatra应用程序中完成我的任务,这是一个OS symbolik链接到原始Rails model exam.rb
场景2。其他人开发的现有数据库
因此,假设我可以访问数据库表,但我没有关于应用程序数据“验证”的任何源代码(可能是用Java开发的,或者由于某些原因我无法访问的任何代码…)
在这种情况下,我认为方法是在ruby activerecord中重新编写验证;对吧?
对不起,我的邮件太长了
乔治
关于.me/solyaris场景1。现有数据库作为(我的)Rails项目的一部分,已在prod中
你有三个选择(在我看来):
我不确定我是否完全理解,但是的,您必须重新编写验证。一个设计良好的数据库意味着一些验证应该已经以约束的形式存在,但并不总是如此。感谢iain对场景1提出的有用建议,是的,我同意三种情况的进展。