你能创建一个没有表的数据库支持的rails模型吗



我有一个复杂的SQL查询,它使用group_by聚合列。

IndividualOrder.select(SUM(...) as amount, other_fields).group_by("organization.id")

问题是:我从IndividualOrder得到了一个ActiveRecord::Relation,这在概念上已经不是真正的结果了。我不完全确定如何将其转换为一种新方法。如果我使用arel来处理它,我通常仍然必须使用IndividualOrder.arel_table,它仍然会转换为我选择的任何内容。

我只想获取字段[:amount, :organization, :other],并能够与它们交互,就像我将这些值作为表的数据库支持模型一样。

因此,它不是一个完全无表的模型(通常不支持数据库(,也不是一个实际的模型,因为它是一个生成的查询。

这是风景区的用例吗?在我通过ActiveRecord进行的查询中,我不得不浏览两个变量。

嗨,希望这个答案能帮助你,这应该是一个评论而不是一个答案(还没有足够的因果报应(

您可以做的是在数据库中创建一个视图

rails g migration my_new_view

ActiveRecord没有为我们提供任何创建视图的方法,因此您将不得不执行";手动";或者你可以使用特定的宝石来做这些。

class MyNewView < ActiveRecord::Migration[5.2]
def change
reversible do |dir|
dir.up do
execute <<-SQL
CREATE OR REPLACE VIEW public.my_new_view AS
# your sql query here SELECT ....
SQL
end
dir.down do
execute <<-SQL
DROP VIEW IF EXISTS public.my_new_view;
SQL
end
end
end
end

现在您可以在模型中引用。

注意,默认情况下,视图表不会显示在模式中,因为您必须将它们放在应用程序中。rb:

config.active_record.schema_format = :sql

欢呼。

相关内容

  • 没有找到相关文章

最新更新