我目前有三种型号:
我想要,tag-controller,获取与标签关系的所有帖子,这些帖子与图像有关系。
有点像:
Tag.posts.where("images").nil?
(当然不喜欢这个,但我希望你能看到我的目标)
首先,我是Rails的新手,并且没有在我的模型上做任何查询条件(仅* .all或* .find)
当然我可以获取属于该标签的所有帖子,遍历帖子并删除那些没有图像关系的帖子,但这似乎不正确;)
* 编辑:
也许我不清楚,我想得到与帖子有关系的所有标签(Tags.all()),它与图像有关。
更像是:Tags.all.posts.images!= null;)*
答案 0 :(得分:0)
你可以这样做:
Tag.joins(posts: :images)
这将加载所有包含图片帖子的标签。
答案 1 :(得分:0)
在SQL中检查是否存在相关记录很容易,但这并不是一个简单的"据我所知,Rails中的语法。简单连接的问题在于,具有n个图像的帖子将在结果集中出现n次 - 您可以对结果执行不同的操作,但随着数据集的增加,效率会越来越低。
Tag.joins(:posts).where("exists (select null from images where images.post_id = posts.id)")
同样,没有图片的帖子的标签:
Tag.joins(:posts).where("not exists (select null from images where images.post_id = posts.id)")