gpt4 book ai didi

ruby-on-rails - 如何在调用 to_json 保留 :includes 时应用 WHERE 过滤器

转载 作者:数据小太阳 更新时间:2023-10-29 07:46:16 25 4
gpt4 key购买 nike

我有以下 Ruby + Rails 代码

render :json =>  enterprise.to_json(:include => { :v3_passengers => { :include => [:cost_center, :restrictions]}})

我需要在将 v3_passengers 模型呈现为 json 之前使用其中一个字段应用 WHERE 过滤器(例如“where v3_passenger.id = 2345”)

我试过了

render :json => enterprise.includes(:v3_passengers).where(enterprise_country: Thread.current['CurrentBehaviour'].COUNTRY).includes(:cost_center, :restrictions).to_json

但是没有用,我环顾四周却没有看到如何实现这一目标。

更新

这就是模型之间的关系

class Enterprise < ActiveRecord::Base
has_many :v3_passengers


class V3Passenger < GlobalDB
has_many :restrictions
belongs_to :cost_center

最佳答案

1。首先,您需要按 joinsincludes 进行过滤:

foo = enterprise.joins(:v3_passengers).where(v3_passengers: {enterprise_country: Thread.current['CurrentBehaviour'].COUNTRY})

或(首选包含,因为您将需要 v3_passengers )

foo = enterprise.includes(:v3_passengers).where(v3_passengers: {enterprise_country: Thread.current['CurrentBehaviour'].COUNTRY})

2。然后在 to_jsoninclude 您需要的其他节点:

foo.to_json(include: [v3_passengers: { include: [:cost_center, :restrictions] } ])

最终结果:

render :json => enterprise.joins(:v3_passengers).where(v3_passengers: {enterprise_country: Thread.current['CurrentBehaviour'].COUNTRY}).to_json(include: [v3_passengers: { include: [:cost_center, :restrictions] } ])

关于ruby-on-rails - 如何在调用 to_json 保留 :includes 时应用 WHERE 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26918893/

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