gpt4 book ai didi

sql - 从复杂查询中获取关联的 ActiveRecord::Relation

转载 作者:行者123 更新时间:2023-12-02 19:52:41 27 4
gpt4 key购买 nike

我有以下 AR 模型:

class Checkin < ActiveRecord::Base
belongs_to :user
end

class User < ActiveRecord::Base
has_many :checkins
end

假设我对签到和用户有一个复杂的查询,例如 Checkin.nearby.todayUser.friends_of(john)。有没有一种简单的方法可以派生 UsersActiveRecord::Relation ?最终结果将是今天在附近登记入住的约翰的 friend 。

我希望最终结果是 ActiveRecord::Relation 的实例。

谢谢!

最佳答案

这应该可以做到:

users = User.friends_of(john)
users = users.joins(:checkins).where(checkins: { checkin_date: Date.today })
users = users.where( # your logic to determine the nearby )

如您所见,缺少有关附近范围的逻辑。

在自定义方法中:

def self.friends_checked_nearby_at_date(friend, nearby = true, date = Date.today)
users = User.friends_of(friend)
users = users.joins(:checkins).where(checkins: { checkin_date: date })
users = users.where( # your logic for the nearby scope ) if nearby.present?

return users
end

# usage:
User.friends_checked_nearby_at_date( User.first )
# or
User.friends_checked_nearby_at_date( User.first, true, Date.today-1.week )
# or
User.friends_checked_nearby_at_date( User.first, false )
# etc.

关于sql - 从复杂查询中获取关联的 ActiveRecord::Relation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20357507/

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