【发布时间】:2021-09-08 08:47:38
【问题描述】:
我很少有数据库视图作为 REST API 端点公开。当前的实现是添加视图后,我们添加 Rails 代码,如
- 添加新路线
- 添加Controller等代码查询返回json响应的视图
这种方法的缺点是我们每次添加数据库视图时都需要向应用程序添加代码,有时这也不是即时的,这是另一个问题。
有没有办法,可能通过使用Meta Programming 或其他我们能够查询数据库以获取视图列表并生成必要的路由和代码以返回有效响应的方法。
下面是相关部分的代码
namespace :api do
namespace :v1 do
[
'leases',
# a new will go in here
]
end
end
class Api::V1::LeasesController < Api::V1::ApplicationController
api :GET, '/leases', "Retrieve paginated well month data"
param :authentication_token, String, "Token for authentication"
def index
result = Api::Lease.ransack(params[:q]).result.page(params[:page]).per(10000)
render json: result.to_json
end
end
class Api::Lease < ExternalRecord
self.table_name = 'View_Leases' #View in External Postgres server
end
谢谢。
【问题讨论】:
-
每次向数据库添加内容时,不应该有理由添加新的路线和视图。您能否添加一些您的路线、模型和控制器的代码?这可能使我们更容易理解您的问题并为您提供帮助。
-
已用相关代码更新问题
标签: ruby-on-rails ruby ruby-on-rails-5 metaprogramming