我有2个协会
belongs_to :author
has_many :favorites
我想知道为什么这个例子有效:
tire.search(load: {include: [:author, :comments]}, page: params[:page], per_page: 8) do
query { string params[:query], default_operator: "AND" } if params[:query].present?
filter :term, author_id: ['111']
sort { by :created_at, 'desc' }
end
这个没有:
tire.search(load: {include: [:author, :comments]}, page: params[:page], per_page: 8) do
query { string params[:query], default_operator: "AND" } if params[:query].present?
filter :term, favorite_ids: ['567']
sort { by :created_at, 'desc' }
end
任何人都可以帮助我吗?
答案 0 :(得分:0)
外键存储在子表中,Rails会为您连接两个表。
因此,在此模型中,有一个属性author_id
,因为此模型属于作者。收藏夹关系的外键存储在收藏夹表中。虽然您可以执行Model.first.favorites
并获取相应的favorites
,但这是因为后一个表中存储了值。
Model.first.author_id
存在。 Model.first.favorite_ids
没有。
如果您想在favorites_ids
上运行搜索,则需要在to_indexed_json
方法中明确定义该搜索。
此外,tire已退役。您应该考虑迁移到elasticsearch-rails或我首选的宝石searchkick!