【发布时间】:2014-11-28 18:01:17
【问题描述】:
我想使用包含关系的搜索条件,如下所示
Post.includes(:tags).where( tags: { title: '%token%' }).all
posts 和 tags 表已与名为 post_tag_relations 的第三个表关联。
架构如下:
posts
id: pk
title: string
content: text
tags
id: pk
title: string
post_tag_relations
id: pk
tag_id: integer
post_id: integer
语法只适用于相等条件,我真的不知道如何使用LIKE搜索条件。
当使用Post.joins(:tags) 和Tag.area_table[:title].matches('%token%') 时,它可以正常工作,但是一些没有标签的帖子将不会被提取。
谁能帮帮我?非常感谢。
更新:
Rails 版本是 4.1。
我想搜索posts.title LIKE '%token%' OR tags.title LIKE '%token%' 之类的帖子,所以如果使用Post.joins(:tags),如果某些帖子没有标签,将无法正常工作。所以我需要改用Post.includes(:tags)。
再次更新:
看起来不能使用单查询来获取,所以我已经尝试了另一个数据库架构...
【问题讨论】:
-
那么您希望实现哪个最终条件?标签匹配的帖子,没有标签的帖子?
-
@МалъСкрылевъ 感谢您的回复,我已经更新了详细信息。
-
你能显示你的表的架构吗?您的表格标签和帖子是否都有“标题”列
-
@AaditiJain 是的,
posts和tags表都有title列。 -
不太明白,如果你尝试匹配标签的标题,你需要没有标签的帖子吗?
标签: ruby-on-rails arel