如何为json模型关联添加条件

时间:2017-06-11 17:14:26

标签: ruby-on-rails ruby ruby-on-rails-5

我试图包含一个关联,但只包含基于其属性值

的关联

Joo模型:

def as_json(options = {})
  super(include: [:foo, (:bar).where('bar.accepted = ?', true)])
end
  

未定义的方法`其中' for:bar:符号

super(include: [:foo, :bar]),我无法控制自己想要的东西。如何完成我想做的事情?仅包含bar.accepted == true

的位置

我看着this看看是否有可能。我正在使用Rails 5 API。

编辑以显示关联:

珠:

has_many  :bars, dependent: :destroy
belongs_to :foo

has_many  :bars, dependent: :destroy

栏:

belongs_to  :foo
belongs_to  :joo

1 个答案:

答案 0 :(得分:1)

根据doc我看到无法有条件地包含关联。我认为您可以在模型Joo上创建条件关联并在as_json

中调用它
Class Joo < ApplicationRecord
  belongs_to :foo
  has_many :bars, dependent: :destroy
  has_many :accepted_bars, -> { where accepted: true }, class_name: "Bar"
end

然后你称之为

@joo = Joo.all.reverse
@joo.as_json(include: [:foo, :accepted_bars])

注意:未经测试!