ruby-on-rails – 使用Postgres函数作为ActiveRecord模型
发布时间:2020-12-16 19:10:19 所属栏目:百科 来源:网络整理
导读:我创建了一个Postgres函数,我正在使用它来执行一个复杂的查询,该查询连接了许多必须由动态日期字段过滤的表. 该函数完美运行,并允许我执行查询,如“SELECT * FROM trail_for_date(‘2014-01-01’)”并返回一个表. 关于函数的Postgres文档的简化示例: CREATE
我创建了一个Postgres函数,我正在使用它来执行一个复杂的查询,该查询连接了许多必须由动态日期字段过滤的表.
该函数完美运行,并允许我执行查询,如“SELECT * FROM trail_for_date(‘2014-01-01’)”并返回一个表. 关于函数的Postgres文档的简化示例: CREATE FUNCTION sum_n_product_with_tab (x int) RETURNS TABLE(sum int,product int) AS $$ SELECT $1 + tab.y,$1 * tab.y FROM tab; $$LANGUAGE SQL; 我怎么能将这个返回表用作Rails / Ruby模型,其中函数的参数是动态的? 像下面的东西(显然不起作用): class SimplifiedExample < ActiveRecord::Base self.table_name = 'sum_n_product_with_tab(:dynamic_input)' end 解决方法
创建包含所需数据的视图,然后您可以轻松创建ActiveRecord模型来访问它.
您尚未提供数据的具体详细信息,但作为一个简单示例,请在Postgres中创建视图以收集数据; create or replace view data_trails as select t.*,td.trail_date from trails t join trail_dates td on (td.trail_id = t.id) 然后创建您的模型 class DataTrail < ActiveRecord::Base scope :on_date,-> (date) { where(trail_date: date) } end DataTrail.on_date(Date.today) 您可以在Enterprise Rails一书中找到更多信息.它现在变得有点过时,但原则是合理的. http://enterpriserails.chak.org/full-text/chapter-11-view-backed-models (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |