I have Rails 5.2 project with three models:
class Post has_many :post_tags has_many :tags, through: :post_tags end class PostTags belongs_to :post belongs_to :tag end class Tags has_many :post_tags has_many :posts, through: :post_tags end
I have the a number of arrays of tag ids, e.g:
array_1 = [3, 4, 5] array_2 = [5, 6, 8] array_3 = [9, 11, 13]
I want a query that will return posts that are tagged with at least one tag with an id from each of the arrays.
For instance, imagine I have a post with the following tag ids:
> post = Post.find(1) > post.tag_ids > [4, 8]
If I ran the query with
array_2 it would return this post. However if I ran it with
array_3 it would not return this post.
I attempted this with the following query:
Post.joins(:tags).where('tags.id IN (?) AND tags.id IN (?)', array_1, array_2)
But this does not return the post.
What should the query be to return the post?
Any help would be greatly appreciated!