gpt4 book ai didi

ruby-on-rails - 在 Rails 中使用命名范围作为子查询

转载 作者:行者123 更新时间:2023-12-04 05:37:06 26 4
gpt4 key购买 nike

在我的 Rails 应用程序中,我想将一个表与另一个表的命名范围连接起来。有没有一种方法可以做到这一点,而不必为我的连接语句重写纯 SQL 中的命名范围?

基本上,有没有办法做这样的事情?

class Foo < ActiveRecord::Base
scope :updated_today, where('updated_at > ?', DateTime.now.prev_day)
end

Bar.joins(Foo.updated_today)

其中 Bar.joins 生成以下 SQL:

SELECT * FROM bars
INNER JOIN
(SELECT * FROM foos WHERE updated_at > 2012-8-9) AS t0
ON bar_id = bars.id

最佳答案

我认为没有专门为此设计的方法。但是,您可以使用 to_sql ActiveRecord::Relation 的方法将范围的完整 SQL 查询作为字符串获取,然后您可以将其用作连接语句中的子查询,如下所示:

Bar.joins("INNER JOIN (#{Foo.updated_today.to_sql}) as t0 ON bar_id = bars.id")

关于ruby-on-rails - 在 Rails 中使用命名范围作为子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11887542/

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