gpt4 book ai didi

ruby-on-rails - 手动实例化 ActiveRecord 模型及其关系?

转载 作者:行者123 更新时间:2023-12-03 15:46:53 25 4
gpt4 key购买 nike

如果我有从多个表中返回记录的 T-SQL(或存储过程)(可能使用 DBI),有没有办法让我手动实例化 ActiveRecord 模型及其关联?显然,我在这里追求数据库性能。我希望能够建立自己的对象层次结构(模型及其关系),但是当我完成所有工作后,我希望每个模型都能正常运行。也就是说,我希望这将在没有一些可能导致我的结构表现异常的黑客的情况下完成。

编辑:

这有点做作,但它确实说明了一个查询如何返回 n 级深的数据(其中“n”只有实际限制)并在一次调用中返回所有内容到数据库:

SELECT * FROM customers 
WHERE id = 1;

SELECT * FROM orders
WHERE customer_id = 1;

SELECT * FROM lineitems
WHERE order_id IN (
SELECT id FROM orders
WHERE customer_id = 1
);

然后拥有所有记录,我只需自己映射关联。通过 ActiveRecord 和 :include 执行此操作的问题在于它会多次访问数据库而不是一次——随着“n”的增加,这会更加繁重。

最佳答案

如果我理解您的意思,那么您正在尝试一次执行多个 sql 查询,并且仍然让 Rails 像往常一样返回所有实例化的模型。

你真正想要的是:

Customer.find(:all, :include => {:orders => :lineitems})

这将在单个查询中获取您感兴趣的所有记录并正确创建 AR 对象。

关于ruby-on-rails - 手动实例化 ActiveRecord 模型及其关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1519855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com