我试图包含一个关联,但只包含基于其属性值
的关联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
答案 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])
注意:未经测试!