我在这个复杂的查询中绞尽脑汁寻找相关帖子:
这是我的模特:
class Post
has_many :post_assignments, :dependent => :destroy
has_many :topics, :through => :post_assignments
end
class PostAssignment
belongs_to :post
belongs_to :topic
end
class Topic
has_many :post_assignments, :dependent => :destroy
has_many :posts, :through => :post_assignments
end
鉴于我的帖子可能有也可能没有主题。我需要找到与此主题共享主题的所有帖子。
我已经在使用squeal gem了,所以语法更可取。
答案 0 :(得分:2)
抱歉,我没有使用过sequeal gem,所以不知道它的语法。我认为这会奏效,但可能不是最佳方式:
@post.topics.map(&:posts).flatten.uniq
我能想到的另一种方式:
Post.joins('LEFT OUTER JOIN post_assignments ON post_assignments.post_id = post.id LEFT OUTER JOIN topics on post_assignments.topic_id = topic.id').where(:topic_id => @post.topics.map(&:id))
最后,您可以编写SQL。